我有一个非常有趣的任务需要帮助。说明如下:
我有一个在主窗口中使用的用户控件 (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
(在主窗口中)
公共(public) 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 自行关闭的方式关闭应用程序,而是通过向主窗口发送一些通知,主窗口关闭应用程序.
最佳答案
最简单的方法是声明一个自定义事件:
public delegate void ShutdownEventHandler (object sender, EventArgs data);
public event ShutdownEventHandler Shutdown;
protected void OnShutdown(EventArgs args)
{
if(Shutdown != null)
Shutdown(this, args);
}
然后订阅 MainWindow 中的 Shutdown 事件,并在那里处理关闭逻辑。
在 SomeUserControl 中,您只需在想要关闭应用程序时运行 OnShutdown。
关于wpf - 如何从用户控件触发自定义事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9226149/