如何处理form2

时间:2016-03-29 17:23:27

标签: c# winforms events

我有两种形式:

Form1.cs的

namespace WindowsFormsApplication1    
    {
        public partial class Form : System.Windows.Forms.Form
        {
            Form2 form2;

            public Form()
            {
                InitializeComponent();
                form2 = new Form2(this);
            }
        }        
        public void buttonCalculate2axis_Click(object sender, EventArgs e)
        {
            // some code - it isn't important
        }
}

Form2.cs

Namespace WindowsFormsApplication1
{
public partial class Form2 : System.Windows.Forms.Form
{
    Form form1;
    public Form2(Form data)
    {
        InitializeComponent();
        form1 = data;
    }        
    private void Form2_VisibleChanged(object sender, PaintEventArgs e)
    {
    // some code - it isn't important
    }
}

我尝试使用 Form2 Form1 的事件public void buttonCalculate2axis_Click(object sender, EventArgs e)。因此,如果我按下 Form1 中的按钮,在 Form2 中,我将等待此事件,之后我可以在代码中进入下一步。 如果它可能我只使用private void Form2_VisibleChanged(object sender, PaintEventArgs e)点击事件。

1 个答案:

答案 0 :(得分:1)

如果带有按钮的表单引用了带有处理程序的表单,并且该处理程序是public,那么您可以dynamically bind an event handler in code

someButton.Click += new System.EventHandler(otherForm.SomeClickHandler);

在您的代码中,点击处理程序似乎 Form1中,并且由于您声称该按钮也位于Form1中,因此不清楚是什么>完全你需要在这里做。但是如果public中有Form2处理程序,则可以使用form2.YourHandlerFunction作为事件处理程序。

或者,如果Form2代替了按钮,并且您希望在Form1中使用处理程序,那么Form2将使用上面的代码form1. buttonCalculate2axis_Click作为事件处理程序。< / p>