RadControls for WinForms

Typically you will handle the events of the objects that make up a menu, not the RadMenu itself.

RadMenuItem Events

The key event for the RadMenuItem object is the Click event, which is fired when the user selects the menu item or presses the associated shortcut key. If the menu item is designed to display check marks, then the ToggleStateChanging and ToggleStateChanged events fire when a check mark is applied to or removed from the RadMenuItem object.

  • ToggleStateChanging: Passes a StateChangingEventArgs parameter with properties for NewValue, OldValue and Cancel. Both NewValue and OldValue are ToggleState enumeration types with values Intermediate, On and Off. If Canceled is set to true the checkbox does not change state and the ToggleStatedChanged event does not fire.
Copy[C#] Handling the ToggleStateChanging event
void radMenuItem2_ToggleStateChanging(object sender, StateChangingEventArgs args)
{
    if (args.NewValue == Telerik.WinControls.Enumerations.ToggleState.Indeterminate)
    {
        args.Cancel = true;
    }
}
Copy[VB.NET] Handling the ToggleStateChanging event
Private Sub radMenuItem2_ToggleStateChanging(ByVal sender As Object, ByVal args As StateChangingEventArgs)
    If args.NewValue = Telerik.WinControls.Enumerations.ToggleState.Indeterminate Then
        args.Cancel = True
    End If
End Sub
  • ToggleStateChanged: This event fires when the checkbox state changes between one of the ToggleState enumeration values of On, Off or Intermediate. The StateChangedEventaArgs passed to this event handler contain the ToggleState property.
Copy[C#] Handling the ToggleStateChanged event
void radMenuItem2_ToggleStateChanged(object sender, StateChangedEventArgs args)
{
    MessageBox.Show(args.ToggleState.ToString());
}
Copy[VB.NET] Handling the ToggleStateChanged event
Private Sub radMenuItem2_ToggleStateChanged(ByVal sender As Object, ByVal args As StateChangedEventArgs)
    MessageBox.Show(args.ToggleState.ToString())
End Sub

RadMenuComboItem Events

For the RadMenuComboItem, you will probably want to work with the events of the embedded ComboBoxElement property. The example below uses the ComboBoxElementSelectedIndexChanged event to get the currently selected combo box value.

Copy[C#] Handling the SelectedIndexChanged event of RadMenuComboItem
void Form1_Load(object sender, EventArgs e)
{
    radMenuComboItem1.ComboBoxElement.SelectedIndexChanged += new Telerik.WinControls.UI.Data.PositionChangedEventHandler(ComboBoxElement_SelectedIndexChanged);
}

void ComboBoxElement_SelectedIndexChanged(object sender, EventArgs e)
{
    RadListDataItem item = (sender as RadDropDownListElement).SelectedItem as RadListDataItem;
    MessageBox.Show(item.Text);
}
Copy[VB.NET] Handling the SelectedIndexChanged event of RadMenuComboItem
Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs)
    AddHandler radMenuComboItem1.ComboBoxElement.SelectedIndexChanged, AddressOf ComboBoxElement_SelectedIndexChanged
End Sub

Private Sub ComboBoxElement_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs)
    Dim item As RadListDataItem = TryCast((TryCast(sender, RadDropDownListElement)).SelectedItem, RadListDataItem)
    MessageBox.Show(item.Text)
End Sub

RadMenuContentItem

Handle the events for the control assigned to RadMenuContentItem ContentElement, not the content item itself. In the example below an event handler is attached to the Click of a button.

Copy[C#] Handling events for controls embedded in RadMenuContentItem
RadMenuContentItem buttonItem = new RadMenuContentItem();
RadButtonElement button = new RadButtonElement();
button.Text = "OK";
button.Click += new EventHandler(button_Click);
buttonItem.ContentElement = button;
radMenu1.Items.Add(buttonItem);
Copy[VB.NET] Handling events for controls embedded in RadMenuContentItem
Dim buttonItem As New RadMenuContentItem()
Dim button As New RadButtonElement()
button.Text = "OK"
AddHandler button.Click, AddressOf button_Click
buttonItem.ContentElement = button
RadMenu1.Items.Add(buttonItem)