wil*_*809 12 vb.net wpf events user-controls
我有一个非常有趣的任务,我需要帮助.描述如下:
我有一个用户控件(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
Run Code Online (Sandbox Code Playgroud)
(在主窗口中)公共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
Run Code Online (Sandbox Code Playgroud)
目标:我想在窗口2中单击取消时关闭应用程序,但我不希望以窗口2自行关闭的方式执行此操作,而是通过向主窗口发送一些通知,并且主窗口关闭应用程序.
Uri*_*Uri 15
如果用户控件的逻辑在用户控件类的"代码隐藏"中实现,请执行以下操作.
我假设XAML文件有一个带有click事件的按钮:
<Button Click="Button_Click">Close App</Button>
Run Code Online (Sandbox Code Playgroud)
然后,在SomeUserControl类的代码后面,执行以下操作:
public partial class SomeUserControl : UserControl
{
public event EventHandler CloseApp;
...
private void Button_Click( object sender, RoutedEventArgs e )
{
if( CloseApp != null ) {
CloseApp( this, new EventArgs( ) );
}
}
}
Run Code Online (Sandbox Code Playgroud)
在主窗口中,收听事件:
...
someUserCtrl.CloseApp += new EventHandler( MyFn );
private void MyFn( object sender, object EventArgs e ) {
...
}
Run Code Online (Sandbox Code Playgroud)