通过单击一个用户控件将用户控件置于最前面
Bringing user control to front by clicking on one user control
我需要一些帮助。
我有 4-5 个用户控件堆叠在一个 another.All 上,大小相同,只有顶部的那个是可见的。
我在最顶部的用户控件上有一个按钮。
我希望当我单击按钮时,用户控件被发送到后面,另一个用户控件被带到前面。
这是我的代码:
private void btnaddcstmrdashbrd_Click(object sender, EventArgs e)
{
addorder addorder = new addorder();
this.Visible = false;
this.SendToBack();
addorder.Visible = true;
addorder.BringToFront();
}
实际情况是,最顶层的 userControl 不再可见。
但是,其他用户控件不会出现在前面并且不可见。
非常感谢您的帮助。
如果用户控件的类型不同,可以参考下面的代码。给用户控件中的按钮绑定同样的方法,使用switch判断用户控件类型
UserControl1 userControl1 = new UserControl1();
UserControl2 userControl2 = new UserControl2();
UserControl3 userControl3 = new UserControl3();
private void Form1_Load(object sender, EventArgs e)
{
Button button1 = new Button
{
Text = "Next Control",
Dock = DockStyle.Bottom,
};
button1.Click += Button_Click;
Button button2 = new Button
{
Text = "Next Control",
Dock = DockStyle.Bottom,
};
button2.Click += Button_Click;
Button button3 = new Button
{
Text = "Next Control",
Dock = DockStyle.Bottom,
};
button3.Click += Button_Click;
userControl1.Controls.Add(button1);
userControl2.Controls.Add(button2);
userControl3.Controls.Add(button3);
Controls.Add(userControl1);
Controls.Add(userControl2);
Controls.Add(userControl3);
}
private void Button_Click(object sender, EventArgs e)
{
string controlName = ((Button)sender).Parent.Name;
switch (controlName)
{
case "UserControl1":
userControl2.BringToFront();
break;
case "UserControl2":
userControl3.BringToFront();
break;
case "UserControl3":
userControl1.BringToFront();
break;
}
}
测试结果,
更新
如果按钮是从设计器添加的,可以参考下面的代码
首先,在Form1.cs中定义用户控件属性。并通过参数传递Form对象。
public partial class Form1 : Form
{
public static Form1 form1;
public Form1()
{
InitializeComponent();
form1 = this;
}
public UserControl1 UC1{get;set;}
public UserControl2 UC2{get;set;}
public UserControl3 UC3{get;set;}
private void Form1_Load(object sender, EventArgs e)
{
UC1 = new UserControl1(form1);
UC2 = new UserControl2(form1);
UC3 = new UserControl3(form1);
Controls.Add(UC1);
Controls.Add(UC2);
Controls.Add(UC3);
}
}
然后修改UserControl1.cs中的代码。
public partial class UserControl1 : UserControl
{
public Form1 f1;
public UserControl1(Form1 form1)
{
InitializeComponent();
f1 = form1;
}
// this button is dragged and dropped from toolbox
private void button1_Click(object sender, EventArgs e)
{
f1.UC2.BringToFront();
//f1.UC3.BringToFront();
//f1.UC1.BringToFront();
}
}
对其余的用户控件执行相同的操作。
我需要一些帮助。 我有 4-5 个用户控件堆叠在一个 another.All 上,大小相同,只有顶部的那个是可见的。 我在最顶部的用户控件上有一个按钮。 我希望当我单击按钮时,用户控件被发送到后面,另一个用户控件被带到前面。 这是我的代码:
private void btnaddcstmrdashbrd_Click(object sender, EventArgs e)
{
addorder addorder = new addorder();
this.Visible = false;
this.SendToBack();
addorder.Visible = true;
addorder.BringToFront();
}
实际情况是,最顶层的 userControl 不再可见。 但是,其他用户控件不会出现在前面并且不可见。 非常感谢您的帮助。
如果用户控件的类型不同,可以参考下面的代码。给用户控件中的按钮绑定同样的方法,使用switch判断用户控件类型
UserControl1 userControl1 = new UserControl1();
UserControl2 userControl2 = new UserControl2();
UserControl3 userControl3 = new UserControl3();
private void Form1_Load(object sender, EventArgs e)
{
Button button1 = new Button
{
Text = "Next Control",
Dock = DockStyle.Bottom,
};
button1.Click += Button_Click;
Button button2 = new Button
{
Text = "Next Control",
Dock = DockStyle.Bottom,
};
button2.Click += Button_Click;
Button button3 = new Button
{
Text = "Next Control",
Dock = DockStyle.Bottom,
};
button3.Click += Button_Click;
userControl1.Controls.Add(button1);
userControl2.Controls.Add(button2);
userControl3.Controls.Add(button3);
Controls.Add(userControl1);
Controls.Add(userControl2);
Controls.Add(userControl3);
}
private void Button_Click(object sender, EventArgs e)
{
string controlName = ((Button)sender).Parent.Name;
switch (controlName)
{
case "UserControl1":
userControl2.BringToFront();
break;
case "UserControl2":
userControl3.BringToFront();
break;
case "UserControl3":
userControl1.BringToFront();
break;
}
}
测试结果,
更新
如果按钮是从设计器添加的,可以参考下面的代码
首先,在Form1.cs中定义用户控件属性。并通过参数传递Form对象。
public partial class Form1 : Form
{
public static Form1 form1;
public Form1()
{
InitializeComponent();
form1 = this;
}
public UserControl1 UC1{get;set;}
public UserControl2 UC2{get;set;}
public UserControl3 UC3{get;set;}
private void Form1_Load(object sender, EventArgs e)
{
UC1 = new UserControl1(form1);
UC2 = new UserControl2(form1);
UC3 = new UserControl3(form1);
Controls.Add(UC1);
Controls.Add(UC2);
Controls.Add(UC3);
}
}
然后修改UserControl1.cs中的代码。
public partial class UserControl1 : UserControl
{
public Form1 f1;
public UserControl1(Form1 form1)
{
InitializeComponent();
f1 = form1;
}
// this button is dragged and dropped from toolbox
private void button1_Click(object sender, EventArgs e)
{
f1.UC2.BringToFront();
//f1.UC3.BringToFront();
//f1.UC1.BringToFront();
}
}
对其余的用户控件执行相同的操作。