2015-09-15 4 views
-2

Мне нужна помощь в подключении двух форм окна. Мне нужно, чтобы при нажатии кнопки в форме 2 форма одна активировала бы определенный метод? Я пытался использовать события, но я не мог заставить его работать.Как подписаться на событие в другой форме C#

+3

показать код своей заявки –

+0

Это две формы окон в одном проекте или в отдельных приложениях? – rmn36

+1

введите код –

ответ

0

Вместо того, чтобы пытаться обрабатывать Нажмите событие кнопки (что вы можете сделать это просто) его лучше позвони метод другой формы в в Click обработчик событий кнопки:

  • Вы должны иметь справку о другой форме вызовите его метод.
  • Метод другой формы должен быть общедоступным.

код в виде 2:

//You should set form1Instance=... somewhere in code 
Form1 form1Instance; 

public void button1_Click(object sender, EventArgs e) 
{ 
    //.... 
    form1Instance.Method1();  
} 

код в Form1:

Public void Method1() 
{ 
    //... 
} 
0
public class Form1 
{ 
    private Form2 form2; 


    public Form1(Form2 frm2) 
    { 
     form2 = frm2; 
     form2.ButtonClicked += button_clicked 
    } 

    public void button_clicked(object sender, EventArgs e) 
    { 
    frm1btn_click(null, null); 
    } 

} 

public class Form2 
{ 
    public event EventHandler ButtonClicked; 

    Public Form2() 
    { 

    } 

    public void frm2btn_click(object sender, EventArgs e) 
    { 
     if(buttonClicked != null) 
     { 
     buttonClicked(null, null); 
     } 
    } 
} 

public class main 
{ 
    public static void main(string[] args) 
    { 
     Form2 form2 = new Form2(); 
     Form1 form1 = new Form1(form2); 
    } 
} 

Это основная идея для ваших событий. Когда кнопка в форме2 нажимает, активируйте свое событие. Убедитесь, что form1 прослушивает событие (это строка + =).

Ваш основной метод должен создавать экземпляры обеих форм.

Также имейте в виду, что это не лучшая практика. Необычно, что формы запускают события друг на друга, и вам, скорее всего, нужна схема базовой модели.

Это было бы более полным, если бы был код.

0

Вы можете использовать концепцию MVVM Light. Компонент Messenger MVVM Light легко позволяет передавать данные между классами.

выполните следующие действия:

1) по нажатию кнопки в form2 и писать код, как показано ниже:

// Sends a message with a Student object. 
var student = new Student{ FirstName = "Gul", LastName = "Ershad" }; 
Messenger.Default.Send(student); 

2) Получить входящее сообщение от form2 к form1 и напишите код, как показано ниже:

// Registers for incoming Student messages. 
Messenger.Default.Register<Student>(this, (student) => 
{ 
    // Works with the Student object. 
}); 

Подробнее читайте в следующей ссылке. Его очень мощная концепция передачи сообщений между классами.

[MVVM Light][1] 
Смежные вопросы