Ho un compito molto interessante con il quale ho bisogno di aiuto. La descrizione è la seguente:Come si attiva un evento personalizzato da un controllo utente?
Ho un controllo utente (SomeUserControl), che sto utilizzando in una finestra principale. Scrivo la mia applicazione interamente su SomeUserControl e la finestra principale ospita SomeUserControl e nient'altro.
In questo momento ho un pulsante di arresto (in SomeUserControl), che dovrebbe chiudere la finestra principale. La ragione di ciò è che non voglio nulla da SomeUserControl per chiudere l'applicazione stessa, ma per attivare un evento da SomeUserControl, e la finestra principale lo riceve, e la finestra principale chiuderà l'applicazione invece di SomeUserControl.
Come faccio? Non ho familiarità con il concetto di creare e gestire eventi personalizzati, quindi se qualcuno potrebbe spiegarlo a parole e in codice come esempio, ti sarò molto grato!
Modifica: ecco il mio codice finora.
(in finestra 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
(nella finestra principale) pubblico loginPage come nuovo 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
Obiettivo: Voglio chiudere l'applicazione quando si fa clic cancella in Window 2, ma non voglio farlo in modo tale che Window 2 si chiuda da solo, ma inviando alcune notifiche alla finestra principale, e Main La finestra chiude l'applicazione.
come la soluzione fornita da AkselK, come posso farlo in VB? specialmente la parte in If (CloseApp! = null). Perché intellisense non riesce a trovare CloseApp. - will0809 20 minuti fa – will0809
Ho la stessa domanda, ma sto usando MVVM, quindi non posso usare questo: - someUserCtrl.CloseApp + = new EventHandler (MyFn); Piuttosto ho usato le librerie MVVM Light e ho aggiunto un trigger di evento alla mia MainWindow come i: EventTrigger>< /i:Interaction.Triggers> Ma non funziona. –