-1
我沒有捕獲窗體對話框事件我創建了一個FormManager類,它顯示一個名爲MyFormView的自定義窗體。 FormManager訂閱MyFormView引發的事件。如果使用ShowDialog()而不是Show()
這裏的代碼方面,在MyFormView觸發事件:
public delegate void MyFormClickEventHandler(string name);
public event MyFormClickEventHandler myFormEventHandler;
private void MyFormClick(object sender, RoutedEventArgs e)
{
if (this.myFormEventHandler != null)
{
this.myFormEventHandler(this.Name.Text);
}
}
FormManager創建MyFormView對話框並訂閱到用戶控件的事件:
public delegate void MyFormEventHandler(string info);
public static event MyFormEventHandler MyFormEvent;
myFormView = new Window
{
Title = "my form!",
Height = 300,
Width = 980,
Content = new MyFormView()
};
((MyFormView)myFormView.Content).myFormEventHandler += this.GetDataFromForm;
這裏顯示我用的對話框:
myFormView.Show();
代碼工作正常,事件在用戶控件內被觸發(MyFormView)並在實際事件處理程序中捕獲(GetDataFromForm)。
的問題是,如果我改變了這一個最後確定的線:
myFormView.ShowDialog();
這裏的問題是,事件沒有得到,因爲在MyFormClick myFormEventHandler解僱是空。
是什麼展()和的ShowDialog之間的差異()使FormManager以不從myFormview訂閱事件?這能解決嗎?
從[mcve]開始(http://stackoverflow.com/help/mcve)。嘗試你的代碼要比猜測你在這裏沒有顯示的代碼中可能做錯了什麼更容易。 – Sinatr
感謝評論@Sinatr。你覺得缺少什麼或沒有很好解釋?我會很高興地添加你的建議:) – juagicre
你如何提升事件,如何訂閱,是否有衝突的事情:更多的訂閱者,'try/catch {}'(空catch塊)等等?猜測很簡單,但它並不真正有用。 – Sinatr