首页 > 解决方案 > 通过位于另一个用户控件中的按钮将用户控件置于前面

问题描述

我有一个场景(Windows 窗体、C#、.NET):

  1. 有一个主窗体托管 2 个名为us1和的用户控件us2
  2. 有一个按钮叫做btnDisplayinside us1
  3. 只有us1是可见的,因为我已经把它带到了前面。
  4. 当用户点击时btnDisplay,必须到前面,但我里面us2没有任何控件!us2us1.cs

我应该如何实现这个?

标签: c#.netvisual-studiowinforms

解决方案


我会考虑两种选择。

1)第一个选项是将 btnDisplay 的修饰符更改为internalorpublic而不是private.

更改 btnDisplay 修饰符

这允许您订阅表单中的点击事件。当点击事件被触发时,您只需将另一个控件放在前面。

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 可能会更好。


推荐阅读