2013-06-26 7 views
1

저는 C#에서 OO 프로그래밍을하고있어 문제가 발생했습니다. 여기이 코드 조각을C# 다른 클래스에 버튼 클래스 호출

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

        // btn_ophalen_click? 
       } 
      } 

가 지금은 "btn_ophalen_click?는"

이 내가 호출 할 버튼입니다 또 다른 버튼의 "기능"을 호출 할 (이 버튼 btn_delete_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