我有一個非常有趣的任務,我需要幫助。描述如下:如何從用戶控件激發自定義事件?
我有一個用戶控件(SomeUserControl),我在主窗口中使用。我完全在SomeUserControl上編寫我的應用程序,並且主窗口託管SomeUserControl,沒有別的。
現在我有一個關機按鈕(在SomeUserControl中),應該關閉主窗口。原因是我不希望SomeUserControl中的任何東西關閉應用程序本身,而是從SomeUserControl中觸發事件,並且主窗口接收它,並且主窗口將關閉應用程序而不是SomeUserControl。
我該怎麼做?我不熟悉創建和處理自定義事件的概念,所以如果有人能夠用文字和代碼來解釋它,我將非常感謝你!
編輯:這是我的代碼到目前爲止。
(在窗口2)
Public Event CloseApp As EventHandler
Private Sub CancelButton_Click(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles CancelButton.Click
DialogResult = False
RaiseEvent CloseApp(Me, New EventArgs)
End Sub
(在主窗口) 公共loginPage作爲新LoginPage
Public Sub New()
InitializeComponent()
AddHandler loginPage.CloseApp, AddressOf Me.ShutDownJobChangeWindow
End Sub
Private Sub ShutDownJobChangeWindow(ByVal sender As Object, ByVal e As EventArgs)
Application.Current.Shutdown()
End Sub
目標:我要關閉應用程序,當我點擊取消在窗口2中,但我不想這樣做,窗戶2自己關閉,但通過發送一些通知到主窗口,主要窗口關閉應用程序。
就像AkselK提供的解決方案一樣,我如何在VB中做到這一點?尤其是If(CloseApp!= null)中的部分。因爲intellisense無法找到CloseApp。 - will0809 20分鐘前 – will0809 2012-02-10 11:16:32
我有同樣的問題,但我使用MVVM,所以我不能使用這個: - someUserCtrl.CloseApp + = new EventHandler(MyFn); 相反,我使用MVVM Light庫,並將事件觸發器添加到我的MainWindow中,如 i:EventTrigger>< /i:Interaction.Triggers> 但它不起作用。 –
2014-01-08 09:42:53