c# - 通过位于另一个用户控件中的按钮将用户控件置于前面
问题描述
我有一个场景(Windows 窗体、C#、.NET):
- 有一个主窗体托管 2 个名为
us1
和的用户控件us2
。 - 有一个按钮叫做
btnDisplay
insideus1
。 - 只有
us1
是可见的,因为我已经把它带到了前面。 - 当用户点击时
btnDisplay
,必须到前面,但我里面us2
没有任何控件!us2
us1.cs
我应该如何实现这个?
解决方案
我会考虑两种选择。
1)第一个选项是将 btnDisplay 的修饰符更改为internal
orpublic
而不是private
.
这允许您订阅表单中的点击事件。当点击事件被触发时,您只需将另一个控件放在前面。
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;
}
}
如果我们1“了解”另一个控件是有意义的,我可能会选择选项2。如果表单知道被点击的按钮更有意义,然后做某事,那么选项 1 可能会更好。
推荐阅读
- java - 为什么它在字符串中返回错误的重复次数?
- react-native - 选项卡导航器中的图标图像被切断 - 反应原生
- .net - 以 100 倍高效方式瞄准一个端点
- javascript - 使用 IF 语句在两个条件都正确时调用函数
- asp.net-mvc - 如何在 mvc razor 页面中使用 c#
- airflow - 使用 DaskExecutor 的 Airflow 实时执行程序日志
- python - 在 Pandas 的整数数据框中使用 DataFrame.at 分配 nan 值时出现 ValueError
- android - Kotlin 版本问题
- java - 为什么 Java String.format null Boolean 的输出为 false 以及如何将 String.format 设置为 null 呢?
- react-native - 在 react-native 项目中包含 paypal-rest-sdk 会产生错误