2017-03-10 35 views
2

我有相同的設計一樣多形式:C#的EventArgs形成事件

In Form1{ 
Form2 = new Formtoopen(); 
Form2.Resize += new EventHandler(Form2_Resize); 
Form2.FormClosing +=new FormClosingEventHandler(Form2_FormClosing); 
} 

,然後將事件:

In Form1{ 
protected virtual void Fly_Form2_Closing(object sender, FormClosingEventArgs e) 
{ 
    if (e.CloseReason == CloseReason.UserClosing) 
    { 
     e.Cancel = true; 
     Fly_Form2.Hide(); 
    } 
} 

protected virtual void Fly_Form2_Visiblechanged(object sender, EventArgs e) 
{ 
    //some code 
} 
} 

我想補充的窗體2類型的EventArgs一個是空的現在起。 我認爲這會讓我的代碼更簡單,因爲我有多個表單共享相同的代碼。

我該怎麼做?我想過事件的自定義參數的方式,但我不知道與類型...

你能幫我嗎?

感謝

+0

爲什麼你想要在那裏包括類型。由於事件被表單本身觸發,所以'this.Hide()'應該做你想做的事情。或者,因爲表單是發件人將其轉換爲表單類型,然後隱藏它。 –

+0

你好,因爲當我這樣做。隱藏Form1隱藏在Form2後面。代碼在Form1中,我打開所有的表單並從Form1處理它們。所以我在Form1當我打電話this.Hide和它隱藏Form1,而不是我看到的形式.... – Jablonovo

+0

它是交給你在銀盤上:((Form)sender).Hide() ; –

回答

0

下面是一些作品:

In Form1{ 
Form2 = new Formtoopen(); 
Form3 = new Formdata(); 
Form2.FormClosing +=new FormClosingEventHandler(Form_FormClosing); 
Form3.FormClosing += new FormClosingEventHandler(Form_FormClosing); 
} 

In Form1{ 
protected virtual void Form_Closing(object sender, FormClosingEventArgs e) 
{ 
if (e.CloseReason == CloseReason.UserClosing) 
{ 
    e.Cancel = true; 
    ((Form)sender).Hide(); 
} 
} 

檢索從對象發件人鑄形發件人。

非常感謝M.Passant!