2013-06-26 7 views
1

Я программирование OO в C# и столкнулся с проблемой. я получил этот кусок кода здесь (это кнопка btn_delete_click)C# вызов класса кнопки в другой класс

  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

perfect! именно то, что я ищу. спасибо – 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

 Смежные вопросы

  • Нет связанных вопросов^_^