Assign a ImageList to RadCommnandBar and add CommandBarDropDownButton to a strip. Then open the Items collection editor for this drop down button, add new RadMenuItem and attempt to assign an ImageIndex from the ImageList of the control.
To reproduce: - Remove and dispose a strip at runtime: private void BRemoveItems_Click(object sender, EventArgs e) { if (this.commandBarRowElement1.Strips.Count > 1) { if (this.commandBarRowElement1.Strips[1] is MyRadStripElement) { MyRadStripElement stripForRemoval = (MyRadStripElement)this.commandBarRowElement1.Strips[1]; this.commandBarRowElement1.Strips.Remove(stripForRemoval); stripForRemoval.Dispose(); } } } Workaround: dispose the item before remove it.
To reproduce: Add a RadCommandBar, add some rows, strips and buttons. Apply any of the following themes: Office2010Black, Office2010Blue or VisualStudio2012Light . You will notice that the whole RadCommandBar has no theming. Workaround: Download the theme files below and apply them as follows: ThemeResolutionService.LoadPackageFile(@"themPath/theme.tssp"); ThemeResolutionService.ApplicationThemeName = "VisualStudio2012Light";
When you change the ImageList property of RadCommandBar at runtime, the images of the items are not updated. In addition, if there are items in the overflow popup, their image is reset to default. WORKAROUND: You need to reset each item's ImageIndex property in order for the new image to appear and you also need to update the ImageList property of the overflow popups manually. private void radCheckBox1_ToggleStateChanged(object sender, StateChangedEventArgs args) { radCommandBar1.ImageList = radCheckBox1.Checked ? imageList32 : imageList16; ToggleImageIndices(); } private void ToggleImageIndices() { foreach (var row in radCommandBar1.Rows) { foreach (var strip in row.Strips) { ((RadControl)strip.OverflowButton.OverflowPanel.Layout.ElementTree.Control).ImageList = radCommandBar1.ImageList; foreach (var item in strip.Items) { int oldIndex = item.ImageIndex; item.ImageIndex = -1; item.ImageIndex = oldIndex; } foreach (var item in strip.OverflowButton.OverflowPanel.Layout.Children.OfType<RadCommandBarBaseItem>()) { int oldIndex = item.ImageIndex; item.ImageIndex = -1; item.ImageIndex = oldIndex; } } } }
Description:If I set the VisibleInStrip property on a CommandBarButton to false, I can still click on the button. To reproduce: 1.First Scenario: -add a RadCommandBar with one CommandBarStripElement; -add 3 CommandBarButtons separated by CommandBarSeparator; -add Click event handler to each button; -set VisibleInStrip=false to the second button of the CommandBarButtons; Try to click the area between the existing two CommandBarSeparators; As a result the Click event is fired for the hidden second button. 2.Second Scenario: -add a RadCommandBar with one CommandBarStripElement; -add 3 CommandBarButtons; -add Click event handler to each button; -set VisibleInStrip=false to the second button of the CommandBarButtons; In some cases clicking the area over the first button fires the Click event of the hidden button. Workaround: Use commandBarButton1.Visibility = ElementVisibility.Collapsed;
Since the IsChecked property is obsolete one cannot use simple data binding to bind the control.
If you have a RadCommandBar instance on a form, and on the same form you have a ContextMenuStrip with one toolstripmenuitem, you will notice that you are not able to select anything from the form.
PasswordChar of TextBoxElement of CommandBarTextBox is not serialized at design-time.
The KeyDown event for CommandBarDropDownList does not fire. The same is the situation with the DropDownListElement.
Currently, in order to set the focus on the textbox part of an item of RadCommandBar in Form_Load, one should do this: this.commandBarTextBox1.TextBoxElement.TextBoxItem.HostedControl.Select(); There should be a shortcut API that allows for easier setting of the focus.
Data-bounded CommandBarDropDownList shows only currently selected item when the CommandBarDropDownList located into overflow list. Workarround: Assign the CommandBar's BindingContext explicitly public partial class Form1 : Form { public Form1() { InitializeComponent(); this.commandBarDropDownList1.BindingContext = this.BindingContext; }
Description: add a RadCommandBar and Dock it to the Left. Add several CommandBarToggleButton and CommandBarButton items and set their StretchHorizontally property to true and StretchVertically property to false. Save changes, close the designer and open it again. The settings are not kept.
Workaround: use the following approach: private void commandBarDropDownList1_EnabledChanged(object sender, EventArgs e) { if (this.commandBarDropDownList1.Enabled) { this.commandBarDropDownList1.DropDownListElement.TextBox.BackColor = Color.White; } else { this.commandBarDropDownList1.DropDownListElement.TextBox.TextBoxItem.BackColor = Color.FromArgb(210, 210, 210); } }
To reproduce: -add CommandBarDropDownButton and add several items of type RadMenuButtonItem; -use the following code: this.commandBarDropDownButton1.DropDownMenu.DropDownClosed += DropDownMenu_DropDownClosed; private void DropDownMenu_DropDownClosed(object sender, Telerik.WinControls.UI.RadPopupClosedEventArgs args) { RadDropDownMenu dropDownMenu = sender as RadDropDownMenu; if (dropDownMenu != null) { CommandBarDropDownButton commandBarDropDownButton = dropDownMenu.Owner as CommandBarDropDownButton; commandBarDropDownButton.Text = dropDownMenu.ClickedItem.Text.ToString(); } } ClickedItem is null only in case of RadMenuButtonItem. Workaround: public class CustomCommandBarDropDownButton : CommandBarDropDownButton { protected override void CreateChildElements() { base.CreateChildElements(); this.DropDownMenu = new CustomDropDownMenu(this); } protected override Type ThemeEffectiveType { get { return typeof(CommandBarDropDownButton); } } } public class CustomDropDownMenu : RadDropDownMenu { public CustomDropDownMenu(RadElement ownerElement) : base(ownerElement, null) { } public override string ThemeClassName { get { return typeof(RadDropDownMenu).FullName; } } protected override void OnMouseClick(MouseEventArgs e) { RadMenuItemBase menuItem = this.GetMenuItemAtPoint(e.Location); if (menuItem is RadMenuButtonItem) { FieldInfo field = typeof(RadDropDownMenu).GetField("clickedItem", BindingFlags.NonPublic | BindingFlags.Instance); field.SetValue(this, menuItem); } base.OnMouseClick(e); } }
DisplayName property of RadCommandBarVisualElement class cannot be localized.
To reproduce: Add a row and a strip to the command bar, add items, set tooltips, make them hide in the overflow menu, they do not show their tooltips. Workaround: this.commandBar.Rows[0].Strips[0].OverflowButton.DropDownMenu.ToolTipTextNeeded += DropDownMenu_ToolTipTextNeeded; this.commandBar.Rows[0].Strips[0].OverflowButton.DropDownMenu.MouseMove += DropDownMenu_MouseMove; Point mousePosition = new Point(); void DropDownMenu_MouseMove(object sender, MouseEventArgs e) { this.mousePosition = e.Location; } void DropDownMenu_ToolTipTextNeeded(object sender, ToolTipTextNeededEventArgs e) { this.commandBar.Rows[0].Strips[0].OverflowButton.DropDownMenu.Owner = this; mousePosition.X += this.commandBar.Rows[0].Strips[0].Size.Width; mousePosition.Y += this.commandBar.Rows[0].Strips[0].Size.Height + 20; new ToolTip().Show("bbbb", this.commandBar, mousePosition, 1000); }
To reproduce: radCommandBar1.Dock = DockStyle.Left; CommandBarToggleButton toggleButton = new CommandBarToggleButton(); toggleButton.Text = "some text"; toggleButton.Orientation = Orientation.Vertical; toggleButton.DrawText = true; radCommandBar1.Rows[0].Strips[0].Items.Add(toggleButton); radCommandBar1.Rows[0].Strips[0].Orientation = Orientation.Vertical;
To reproduce: 1.Add RadCommandBar with one CommandBarStripElement and items to a form 2.Float the strip 3.Save the layout 4.Close the form 5.Open the form 6.Load the layout
Visual Studio's property window allow you to assign these properties the value of (none) or null. This will result in exception when the designer is reopened.