C# C:使用接口将用户控件中的现有控件集成到另一个窗体中

C# C:使用接口将用户控件中的现有控件集成到另一个窗体中,c#,winforms,user-controls,factory-pattern,C#,Winforms,User Controls,Factory Pattern,我有一个用户控件/表单,其中包含一些控件按钮、组框等,。。。。我想创建一个界面,让用户从自己的窗体访问这些控件。 这意味着当他单击表单中的按钮时,将执行我表单中按钮的内容,如下所示: void Btn1_Click(object sender, EventArgs e) { [some statements and preparation code] using (var Dialog= new UserControlClass())

我有一个用户控件/表单,其中包含一些控件按钮、组框等,。。。。我想创建一个界面,让用户从自己的窗体访问这些控件。 这意味着当他单击表单中的按钮时,将执行我表单中按钮的内容,如下所示:

    void Btn1_Click(object sender, EventArgs e)
    {

        [some statements and preparation code]  
        using (var Dialog= new UserControlClass())
        {
            Dialog.Initialization();
            Dialog.ShowDialog(this);
        }
        [some statements code] 
     }
用户无权访问我的代码,我只想让他使用接口访问我的控件,同时保持我的代码不变。
工厂是否是正确的解决方案,以及如何做到这一点?

例如,假设您有这样一个用户控件。您需要单击父窗体中的按钮1

public partial class MyUserControl : UserControl
{
    public MyUserControl()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        MessageBox.Show("Hello!");
    }

    public void ShowDialog()
    {
        button1_Click(null, new EventArgs());
    }
}
为了实现这一点,您可以向ex:ShowDialog的接口添加一个公共函数,并从主窗体调用它,如下所示

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        myUserControl1.ShowDialog();
    }
}
只要在UserControl中创建一个公共方法,用户就会调用它。你这里有什么问题?一个接口当然是有用的,但不是必需的,除非您有多种类型的用户控件,它们都需要以相同的方式处理?如前所述,您的问题足够详细,需要界面/工厂模式。在ShowDialog中,不要调用按钮1\u直接单击,而是使用。