我有一个场景(Windows窗体,C#、. NET):
us1
和us2
的用户控件。btnDisplay
内有一个名为us1
的按钮。us1
是可见的,因为我把它放在了前面。btnDisplay
时,us2
必须排在最前面,但是我在us2
内的us1.cs
上没有任何控件!我应该如何实现呢?
答案 0 :(得分:1)
我会考虑两种选择。
1)第一种选择是将btnDisplay的修饰符更改为internal
或public
而不是private
。
这使您可以订阅表单中的click事件。触发click事件后,您只需将另一个控件置于最前面即可。
public Form1()
{
InitializeComponent();
us11.btnDisplay.Click += BtnDisplay_Click;
}
private void us11_DisplayButtonClicked(object sender, EventArgs e)
{
us21.BringToFront();
}
2)另一种选择是将您的us2控件传递给us1控件,以便us1控件可以将us2置于最前面。
public partial class us1 : UserControl
{
// Property to hold the us2 control.
public us2 us2 { get; set; }
public us1()
{
InitializeComponent();
}
private void btnDisplay_Click(object sender, EventArgs e)
{
// Bring the other control to the front if the property has been set.
us2?.BringToFront();
}
}
在您的表单中,在us1上设置us2属性:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
us11.us2 = us21;
}
}
如果对我们来说“知道”另一个控件有意义,那么我可能会选择选项2。如果让表单知道被单击的按钮然后执行某项操作更有意义,那么选项1可能会更好。