2016-09-15 57 views
0

我有三个的WinForms .. Form1的窗体2和Form3调用2种2种不同形式的

// Form1的按钮

private void btF1_Click(object sender, EventArgs e) 
    { 
     new Form3(this).ShowDialog(); 
    } 

//窗体2按钮

private void btF21_Click(object sender, EventArgs e) 
    { 
     new Form3(this).ShowDialog(); 
    } 

// Form3

方法
 public partial class AjoutDemandeur : Form 
{  
    Form1 _owner; 
    Form2 _owner2; 

    public Form3(Form1 owner, Form2 owner2) 
    { 
     InitializeComponent(); 
     _owner = owner; 
     _owner2 = owner2; 
    } 

private void button1_Click(object sender, EventArgs e) 
    { 
     _owner.methodForm1(); //call a method from Form1 
    } 

private void button2_Click(object sender, EventArgs e) 
    { 
     _owner2.methodForm2(); // call a method from Form2 
    } 

我想调用一种方法od从Form1和Form2到Form3 但问题出在两个按钮btF1和btF2 =>没有给出的参数对应于Form3.Form3(Form1,Form2)' '所需的形式参数'owner2'所以解决方案!

+0

为什么不能让他们在Form3能特性从Form1和Form2设置? – Kidiskidvogingogin

+3

Form3需要两个参数Form1所有者,Form2所有者2,并且您只发送一个参数。改变form3只需要一个参数,或改变你的调用方法发送两个参数 - 或使用THIS关键字(谷歌c-sharp可选参数)使form3的构造函数的第二个参数可选 –

+0

我还会问这个问题:“这是一个函数需要立即运行,或者可以在窗体关闭时运行“。如果是后者,你可以使用FormClosing事件处理程序 – Takarii

回答

0

解决! 只是我需要在调用方法传递一个空参数

// Form1的按钮

private void btF1_Click(object sender, EventArgs e) 
{ 
    new Form3(this,null).ShowDialog(); 
} 

//窗体2按钮

private void btF21_Click(object sender, EventArgs e) 
{ 
    new Form3(null,this).ShowDialog(); 
} 
1

在Form1和Form2中创建事件及其处理程序。现在从Form3中触发这些事件。