【发布时间】:2018-06-14 16:06:30
【问题描述】:
有没有办法判断哪个控件触发了路由事件?我有一个 SelectionChangedEvent 供 radgridview 上的组合框使用。我希望该事件中的编码仅处理该组合框而不处理其他组合框。我尝试使用 e.OriginalSource.Name、ToString、sender.ToString、sender.Name 但都返回“”。所以没有办法知道事件正在处理哪个组合框。
创建事件的代码:
Me.AddHandler(RadComboBox.SelectionChangedEvent, New System.Windows.Controls.SelectionChangedEventHandler(AddressOf FinishedEndsChanged))
事件内的代码:
Private Sub FinishedEndsChanged(ByVal sender As Object, ByVal e As SelectionChangedEventArgs)
Try
If dgChosenItems.SelectedItems.Count > 0 Then
Dim comboBox As RadComboBox = CType(e.OriginalSource, RadComboBox)
If comboBox.SelectedValue IsNot Nothing Then
Dim endChosen As String = CStr(comboBox.SelectedValue)
谢谢。
【问题讨论】:
-
sender参数将是触发事件的组合框。所以你可以说If sender Is RadComboBox Then...。我假设您这样做是因为您对一堆组合框使用相同的事件处理程序,但您想要一个特殊情况。更简洁的解决方案是为其提供一个仅用于该组合框的事件处理程序。
标签: wpf vb.net telerik radgridview radcombobox