2016-09-15 59 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中觸發這些事件。