2013-06-26 135 views
1

我是C#中的OO編程,遇到了一個問題。 我這一塊的位置代碼(這是按鈕btn_delete_clickC#將一個按鈕類調用到另一個類中

  if (dialogResult == DialogResult.Yes) 
      { 
       if (objBestand.bestandsnaamString == file2) 
       { 
        objBestand.VerwijderBestand(); 

        // btn_ophalen_click? 
       } 
      } 

現在我想打電話給另一個按鈕的「功能」,在「btn_ophalen_click?

這是我想調用按鈕有

private void btn_Ophalen_Click(object sender, EventArgs e) 
    { 
      string PathString; // maak string aan 
      PathString = textBox1.Text + @":\" + textBox2.Text; //vul_list string mwet waarde 
      objBestanden = new clsBestanden(); 
      objBestanden.Zoekbestanden(PathString); // Roep method Zoekbestanden aan 
      vul_list(); // vul lijst of form 
    } 

當我點擊btn_delete_click,它刪除一個文件,然後有「觸發」 btn_ophalen_click 我希望我給了足夠的信息。

+3

只需將btn_Ophalen_Click中的代碼移動到單獨的方法中即可。然後,您可以從if語句和btn_Ophalen_Click中調用此方法。 – Dominic

回答

5

將事件作爲方法調用是不好的做法。做你想做的最好辦法要的是事件代碼移到單獨的方法:

//part of btn_delete_click event code 
if (dialogResult == DialogResult.Yes) 
    { 
     if (objBestand.bestandsnaamString == file2) 
     { 
      objBestand.VerwijderBestand(); 

      Ophalen(); 
     } 
    } 

private void btn_Ophalen_Click(object sender, EventArgs e) 
{ 
    Ophalen(); 
} 

private void Ophalen() 
{ 
    string PathString; // maak string aan 
    PathString = textBox1.Text + @":\" + textBox2.Text; //vul_list string mwet waarde 
    objBestanden = new clsBestanden(); 
    objBestanden.Zoekbestanden(PathString); // Roep method Zoekbestanden aan 
    vul_list(); // vul lijst of form 
} 
+0

完美!正是我在找什麼。謝謝 – TaurusFire

0

你可以做這樣的事情。

public void toDo() 
{ 
string PathString; // maak string aan 
     PathString = textBox1.Text + @":\" + textBox2.Text; //vul_list string mwet waarde 
     objBestanden = new clsBestanden(); 
     objBestanden.Zoekbestanden(PathString); // Roep method Zoekbestanden aan 
     vul_list(); // vul lijst of form 
} 

if (dialogResult == DialogResult.Yes) 
     { 
      if (objBestand.bestandsnaamString == file2) 
      { 
       objBestand.VerwijderBestand(); 
       toDo() 
      } 
     } 
+0

我不能這樣做OO編程:) – TaurusFire

+0

從技術上講,你*可以*,但它的糟糕做法,因爲你複製代碼,而不是重複使用 – w69rdy

+0

你可以在方法中放置代碼並調用方法..我編輯答案 –

1

我覺得button.PerformClick();進行點擊是你need什麼。 但更好的提取方法Ophalen()與所需的參數,並在兩個按鈕點擊處理程序中調用它

2

你應該始終保持事件在一個單獨的方法內的行動。

private void btn_delete_Click(object sender, EventArgs e) 
{ 
    Delete(); 
} 

private void btn_Ophalen_Click(object sender, EventArgs e) 
{ 
    Open(); 
} 

private void Delete() 
{ 
    if (dialogResult == DialogResult.Yes) 
    { 
     if (objBestand.bestandsnaamString == file2) 
     { 
      objBestand.VerwijderBestand(); 
      Open(); 
     } 
    } 
} 

private void Open() 
{ 
    string PathString; // maak string aan 
     PathString = textBox1.Text + @":\" + textBox2.Text; //vul_list string mwet waarde 
     objBestanden = new clsBestanden(); 
     objBestanden.Zoekbestanden(PathString); // Roep method Zoekbestanden aan 
     vul_list(); // vul lijst of form 
} 
+0

看起來不錯;)但我沒有顯示所有的代碼中刪除函數的一部分是在另一個類中,但如果代碼如上所示,這是完美的 – TaurusFire

+0

保留Delte()方法中的所有刪除代碼,它會起作用。 – Jegan

相關問題