通过位于另一个用户控件中的按钮将用户控件置于前面

时间:2018-06-19 12:04:00

标签: c# .net visual-studio winforms

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

  1. 有一个主要形式,其中包含两个名为us1us2的用户控件。
  2. btnDisplay内有一个名为us1的按钮。
  3. 只有us1是可见的,因为我把它放在了前面。
  4. 当用户单击btnDisplay时,us2必须排在最前面,但是我在us2内的us1.cs上没有任何控件!

我应该如何实现呢?

1 个答案:

答案 0 :(得分:1)

我会考虑两种选择。

1)第一种选择是将btnDisplay的修饰符更改为internalpublic而不是private

Changing btnDisplay modifier

这使您可以订阅表单中的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可能会更好。