2016-02-28 4 views
0

Я немного запутался над объектом-отправителем в VB .Net. Если у меня есть следующее событие:Обработка объекта-отправителя в событии закрытия

Private Sub wpfWindow_Closing(sender As Object, e As 
      ComponentModel.CancelEventArgs) Handles wpfWindow.Closing 

End Sub 

Тогда я понимаю, что отправитель является вещью, которая называет событие закрытия непосредственно перед закрытием окна. Тем не менее, я изо всех сил пытаюсь понять, как определить, какая кнопка была нажата. Если я делаю следующее событие:

Dim aButton As Button = CType(sender, Button) 

    If aButton.Content = "Next" Then 
     MessageBox.Show("You pressed Next") 
    End If 

Это вызовет ошибку, поскольку он не может бросить отправителя, даже если я нажал «Next».

также пытались:

If sender Is btnNext Then 
    MessageBox.Show("You pressed Next") 
End If 

Но в этом случае, он просто пропускает его.

В конце дня я просто пытаюсь перемещаться по окнам WPF. Появляется начальное окно, которое я скрою, когда перейду к следующему. Проблема в том, что во втором окне я хотел бы определить, будет ли нажата кнопка «Далее», а не «Отмена» или кнопка закрытия в правом верхнем углу. Если нажать, то я хотел бы закрыть окно и открыть другое. Если другие кнопки нажаты, то я хотел бы закрыть окно и открыть начальное окно.

ответ

0

sender будет Window, потому что Closing является событием Windows.

Таким образом, вы можете отдать отправителя Window, но не до Button.

Если у вас есть отдельные обработчики событий Click для ваших кнопок Next и Cancel, нетрудно определить, какой из Button был нажат. В обработчике событий Click вы можете делать то, что вы изначально хотели, отливая sender до типа Button.

+0

спасибо - знал, что у меня был неправильный конец палки как-то – area9