C#panel问题 如何让panel永远不成为另一个panel的子控件?
我是纯粹的初学者,被数据库老师逼着用c#写程序,实际上我们都没学过c#.因为不会别的方法,我就用了建造多个panel来实现页面切换.我看网上说这样还可以避免多个form间...
我是纯粹的初学者,被数据库老师逼着用c#写程序,实际上我们都没学过c# .
因为不会别的方法,我就用了建造多个panel来实现页面切换.我看网上说这样还可以避免多个form间共享数据的麻烦.
我现在的程序,登陆页面用loginpanel载着所有的textbox等等,等到login成功,我就把loginpanel整个扔到页面外面去,把userpanel拽过来.
但是随着panel越来越多,有时候会出现切页面失败,整个窗口变成底色的问题.我查了网上之后,发现是我编辑程序的时候把一个当前没有编辑的panel放到旁边,正好盖在了另一个panel上. 系统就把这两个panel判定为父子控件,一并被拖走了.用visible的话,也是同样的问题.父子控件一并消失.
希望高手赐教,怎么能防止这一问题的发生.随着panel越来越多,我已经没那么大地方把它们一字排开了. 有没有属性能防止他们变成互相的子控件?
谢谢了
如果说panel这个不好实现,有没有其他多窗口切换的方法? 新建一个form? 怎么让两个form互相切换? 数据传递如何? 展开
因为不会别的方法,我就用了建造多个panel来实现页面切换.我看网上说这样还可以避免多个form间共享数据的麻烦.
我现在的程序,登陆页面用loginpanel载着所有的textbox等等,等到login成功,我就把loginpanel整个扔到页面外面去,把userpanel拽过来.
但是随着panel越来越多,有时候会出现切页面失败,整个窗口变成底色的问题.我查了网上之后,发现是我编辑程序的时候把一个当前没有编辑的panel放到旁边,正好盖在了另一个panel上. 系统就把这两个panel判定为父子控件,一并被拖走了.用visible的话,也是同样的问题.父子控件一并消失.
希望高手赐教,怎么能防止这一问题的发生.随着panel越来越多,我已经没那么大地方把它们一字排开了. 有没有属性能防止他们变成互相的子控件?
谢谢了
如果说panel这个不好实现,有没有其他多窗口切换的方法? 新建一个form? 怎么让两个form互相切换? 数据传递如何? 展开
展开全部
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
namespace WindowsApplication21
{
/// <summary>
/// Form2 的摘要说明。
/// </summary>
public class Form2 : System.Windows.Forms.Form
{
private bool flag = false;
private System.Windows.Forms.Panel panel1;
private System.Windows.Forms.Panel panel2;
private System.Windows.Forms.Button button1;
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.Container components = null;
public Form2()
{
//
// Windows 窗体设计器支持所必需的
//
InitializeComponent();
//
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
//
}
/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if(components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows 窗体设计器生成的代码
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.panel1 = new System.Windows.Forms.Panel();
this.panel2 = new System.Windows.Forms.Panel();
this.button1 = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// panel1
//
this.panel1.BackColor = System.Drawing.Color.IndianRed;
this.panel1.Location = new System.Drawing.Point(32, 32);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(152, 48);
this.panel1.TabIndex = 0;
//
// panel2
//
this.panel2.BackColor = System.Drawing.Color.SpringGreen;
this.panel2.Location = new System.Drawing.Point(98, 64);
this.panel2.Name = "panel2";
this.panel2.Size = new System.Drawing.Size(96, 80);
this.panel2.TabIndex = 1;
//
// button1
//
this.button1.Location = new System.Drawing.Point(96, 200);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(128, 56);
this.button1.TabIndex = 2;
this.button1.Text = "button1";
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// Form2
//
this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
this.ClientSize = new System.Drawing.Size(292, 273);
this.Controls.Add(this.panel2);
this.Controls.Add(this.button1);
this.Controls.Add(this.panel1);
this.Name = "Form2";
this.Text = "Form2";
this.ResumeLayout(false);
}
#endregion
private void button1_Click(object sender, System.EventArgs e)
{
if (flag)
this.panel1.SendToBack();
else
this.panel2.SendToBack();
flag = !flag;
}
}
}
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
namespace WindowsApplication21
{
/// <summary>
/// Form2 的摘要说明。
/// </summary>
public class Form2 : System.Windows.Forms.Form
{
private bool flag = false;
private System.Windows.Forms.Panel panel1;
private System.Windows.Forms.Panel panel2;
private System.Windows.Forms.Button button1;
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.Container components = null;
public Form2()
{
//
// Windows 窗体设计器支持所必需的
//
InitializeComponent();
//
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
//
}
/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if(components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows 窗体设计器生成的代码
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.panel1 = new System.Windows.Forms.Panel();
this.panel2 = new System.Windows.Forms.Panel();
this.button1 = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// panel1
//
this.panel1.BackColor = System.Drawing.Color.IndianRed;
this.panel1.Location = new System.Drawing.Point(32, 32);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(152, 48);
this.panel1.TabIndex = 0;
//
// panel2
//
this.panel2.BackColor = System.Drawing.Color.SpringGreen;
this.panel2.Location = new System.Drawing.Point(98, 64);
this.panel2.Name = "panel2";
this.panel2.Size = new System.Drawing.Size(96, 80);
this.panel2.TabIndex = 1;
//
// button1
//
this.button1.Location = new System.Drawing.Point(96, 200);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(128, 56);
this.button1.TabIndex = 2;
this.button1.Text = "button1";
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// Form2
//
this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
this.ClientSize = new System.Drawing.Size(292, 273);
this.Controls.Add(this.panel2);
this.Controls.Add(this.button1);
this.Controls.Add(this.panel1);
this.Name = "Form2";
this.Text = "Form2";
this.ResumeLayout(false);
}
#endregion
private void button1_Click(object sender, System.EventArgs e)
{
if (flag)
this.panel1.SendToBack();
else
this.panel2.SendToBack();
flag = !flag;
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这样太麻烦了
早点抛弃
像你这样把这么多Panel放一个页面上 以后维护 或者修改啥的 都太费劲了
早点抛弃
像你这样把这么多Panel放一个页面上 以后维护 或者修改啥的 都太费劲了
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
没有额。你添加的时候可以切换到HTML源代码,然后插入控件。或者自己手动写Panel控件也一样。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询