나는 도움이 필요한 매우 흥미로운 일이있다. 설명은 다음과 같습니다 :사용자 정의 컨트롤에서 사용자 정의 이벤트를 발생시키는 방법은 무엇입니까?
저는 메인 윈도우에서 사용하고있는 사용자 컨트롤 (SomeUserControl)을 가지고 있습니다. 내 응용 프로그램을 전적으로 SomeUserControl에 작성하고 Main Window는 SomeUserControl을 호스팅하며 다른 것은 아무것도 사용하지 않습니다.
지금은 메인 윈도우를 닫아야하는 종료 버튼 (SomeUserControl에서)이 있습니다. 그 이유는 SomeUserControl에서 응용 프로그램 자체를 닫지 않고 SomeUserControl에서 이벤트를 발생시키고 Main Window가이를 수신하고 MainUser가 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가 닫히는 방식으로 처리하고 싶지는 않지만 메인 윈도우에 알림을 보내고 Main 창이 응용 프로그램을 닫습니다.
public delegate void ShutdownEventHandler (object sender, EventArgs data);
public event ShutdownEventHandler Shutdown;
protected void OnShutdown(EventArgs args)
{
if(Shutdown != null)
Shutdown(this, args);
}
그런 다음 당신은 MainWindow를의 종료 이벤트에 가입하고, 거기에 종료 로직을 처리 :
, 어떻게 그것을 VB에서해야합니까? 특히 If의 부분 (CloseApp! = null). Intellisense는 CloseApp을 찾을 수 없기 때문에. - will0809 20 분 전 – will0809
내가 같은 질문을 데하지만 난 MVVM을 사용하고, 그래서이 사용할 수 없습니다 : - someUserCtrl.CloseApp + = 새로운 이벤트 핸들러 (MyFn를); 오히려 내가 MVVM 빛 라이브러리를 사용하고 나의 MainWindow를에 이벤트 트리거를 추가 <명령 : EventToCommand 명령 = "{바인딩 CloseAppCommand PassEventArgsToCommand ="진정한 "/> I : EventTrigger>< /i:Interaction.Triggers는> 는하지만 그것은 작동하지 않습니다. –