See attached. Workaround: radCheckBox1.ButtonElement.MouseEnter += CheckMarkPrimitive_MouseEnter; radCheckBox1.ButtonElement.MouseLeave += CheckMarkPrimitive_MouseLeave; private void CheckMarkPrimitive_MouseLeave(object sender, EventArgs e) { radCheckBox1.ButtonElement.CheckMarkPrimitive.Fill.ResetValue(BorderPrimitive.BackColorProperty, ValueResetFlags.Local); } private void CheckMarkPrimitive_MouseEnter(object sender, EventArgs e) { radCheckBox1.ButtonElement.CheckMarkPrimitive.Fill.BackColor = Color.Red; }
To reproduce: - Create a dpi aware application and add a checkbox to it. - Change your DPI setting to 200% and start the application. - The checkmark is not scaled only the text is. Workaround: this.radCheckBox2.ButtonElement.CheckMarkPrimitive.CheckElement.UseFixedCheckSize = false; this.radCheckBox2.ButtonElement.CheckMarkPrimitive.CheckElement.MinSize = new Size(100, 100);
How to reproduce: add several menu items displaying only images to the split button and set the MaximumSize property of the drop-down menu Workaround: public RadForm1() { InitializeComponent(); this.radSplitButton1.DropDownButtonElement.DropDownMenu.MaximumSize = new Size(30, 0); RadScrollBarElement element = this.radSplitButton1.DropDownButtonElement.DropDownMenu.PopupElement.FindDescendant<RadScrollBarElement>(); element.Visibility = Telerik.WinControls.ElementVisibility.Collapsed; element.RadPropertyChanging += Element_RadPropertyChanging; } private void Element_RadPropertyChanging(object sender, Telerik.WinControls.RadPropertyChangingEventArgs args) { if (args.Property.Name == "Visibility") { args.Cancel = true; } }
To reproduce: - Just add a split button to a form and set its theme to Office2010Silver. Workaround: radSplitButton1.DropDownButtonElement.ActionButton.Margin = new Padding(0, 0, -1, 0);
Use attached video and project to reproduce. Workaround: Disable the animations: btnAdd.DropDownButtonElement.DropDownMenu.AnimationEnabled = false; //or ThemeResolutionService.AllowAnimations = false;
Workaround: this.radDropDownButton1.DropDownButtonElement.DropDownMenu.PopupElement.AutoSize = false; this.radDropDownButton1.DropDownButtonElement.DropDownMenu.PopupElement.Size = new Size(300, 300);
The same case is valid for RadToggleButton as well. To reproduce: use the following custom RadCheckBox. You will notice that the ToggleStateChanging, ToggleStateChanged, PropertyChanged, CheckStateChanging, CheckStateChanged won't fire anymore: public class MyCheckBoxElement : RadCheckBoxElement { protected override Type ThemeEffectiveType { get { return typeof(RadCheckBoxElement); } } } public class MyCheckBox : RadCheckBox { protected override RadButtonElement CreateButtonElement() { return new MyCheckBoxElement(); } public override string ThemeClassName { get { return typeof(RadCheckBox).FullName; } } } Workaround: public class MyCheckBoxElement : RadCheckBoxElement { protected override void OnKeyDown(KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { return; } base.OnKeyDown(e); } protected override Type ThemeEffectiveType { get { return typeof(RadCheckBoxElement); } } } public class MyCheckBox : RadCheckBox { protected override RadButtonElement CreateButtonElement() { MyCheckBoxElement checkBox = new MyCheckBoxElement(); checkBox.ToggleStateChanging += new StateChangingEventHandler(ButtonElement_ToggleStateChanging); checkBox.ToggleStateChanged += new StateChangedEventHandler(ButtonElement_ToggleStateChanged); checkBox.PropertyChanged += new PropertyChangedEventHandler(res_PropertyChanged); checkBox.CheckStateChanging += new CheckStateChangingEventHandler(res_CheckStateChanging); checkBox.CheckStateChanged += new EventHandler(res_CheckStateChanged); return checkBox; } private void res_CheckStateChanged(object sender, EventArgs e) { base.OnCheckStateChanged(e); } private void res_CheckStateChanging(object sender, CheckStateChangingEventArgs args) { base.OnCheckStateChanging(args); } private void res_PropertyChanged(object sender, PropertyChangedEventArgs e) { if (e.PropertyName == "IsChecked") { base.OnNotifyPropertyChanged("IsChecked"); } } private void ButtonElement_ToggleStateChanged(object sender, StateChangedEventArgs args) { base.OnToggleStateChanged(args); base.OnNotifyPropertyChanged("Checked"); base.OnNotifyPropertyChanged("CheckState"); base.OnNotifyPropertyChanged("ToggleState"); } private void ButtonElement_ToggleStateChanging(object sender, StateChangingEventArgs args) { base.OnToggleStateChanging(args); } public override string ThemeClassName { get { return typeof(RadCheckBox).FullName; } } }
Add DefaultItem property in the property grid and allow to set it in design time
How to reproduce: check the attached video Workaround: public partial class RadForm1 : Telerik.WinControls.UI.RadForm { public RadForm1() { InitializeComponent(); ThemeResolutionService.AllowAnimations = false; this.radToggleSwitch1.AllowAnimation = false; } }
To reproduce: apply the Window8 theme to the entire application containing a RadButton and a RadCheckBox. Change the color of RadButton to Green and handle the RadCheckBox.ToggleStateChanged event in order to enable/disable the button. You will notice that after disabling once the button enabling it again, the ButtonFillElement.NumberOfColors property is set to 1 and gradient color becomes solid. Please refer to the attached sample project and gif file. Workaround: int numberOfColors = 0; private void radCheckBox1_ToggleStateChanged(object sender, Telerik.WinControls.UI.StateChangedEventArgs args) { if (args.ToggleState == Telerik.WinControls.Enumerations.ToggleState.On) { this.radButton1.Enabled = true; this.radButton1.ButtonElement.ButtonFillElement.NumberOfColors = numberOfColors; } else { numberOfColors = this.radButton1.ButtonElement.ButtonFillElement.NumberOfColors; this.radButton1.Enabled = false; } }
Please refer to the attached sample project and gif file. The text gets clipped sometimes when resizing the form. It may become even blurry. This problem is observed with the MS Form, but it is not reproducible with RadForm. Workaround: use a RadForm UPDATED: a second project is attached (00393359CheckBoxDisabledUPDATED.zip). The MissingCheckBoxesText.gif illustrates the incorrect behavior. In this case, the UseCompatibleTextRendering property is set to false. Workaround for the second case: instead of setting the RadCheckBox.Enabled property to false, disabled the check primitive and make the text gray as follows: private void radButton1_Click(object sender, EventArgs e) { for (int i = 0; i < 30; i++) { RadCheckBox cb = new RadCheckBox(); cb.Text = "RadCheckBox " + i; cb.Location = new Point(10, i * 30); cb.ButtonElement.CheckMarkPrimitive .Enabled = false; cb.ButtonElement.TextElement.ForeColor = Color.Gray; cb.ButtonElement.ShouldHandleMouseInput = false; cb.UseCompatibleTextRendering = false; this.Controls.Add(cb); } }
Parse event of the property binding is not fired when you change the ToggleState value of RadToggleButton: Workaround: private void Form1_Shown(object sender, EventArgs e) { Binding b = new Binding("ToggleState", vm, "IsToggleSet", true, DataSourceUpdateMode.OnPropertyChanged); b.Format += new ConvertEventHandler(b_Format); b.Parse += new ConvertEventHandler(b_Parse); radToggleButton1.DataBindings.Add(b); } void b_Parse(object sender, ConvertEventArgs e) { if (e.DesiredType != typeof(bool) || !(e.Value is ToggleState)) return; ToggleState state = (ToggleState)e.Value; e.Value = (state == ToggleState.On) ? true : false; } void b_Format(object sender, ConvertEventArgs e) { if (e.DesiredType != typeof(ToggleState) || !(e.Value is bool)) return; bool isToggleOn = (bool)e.Value; e.Value = isToggleOn ? ToggleState.On : ToggleState.Off; }
To reproduce: - Add SplitButton to a ribbon bar and set its image. - Disable the button. Workaround: this.radSplitButtonElement1.UseDefaultDisabledPaint = true;
Workaround: public class MyRadToggleSwith : RadToggleSwitch { public override string ThemeClassName { get { return typeof(RadToggleSwitch).FullName; } } protected override void OnGotFocus(EventArgs e) { base.OnGotFocus(e); this.ToggleSwitchElement.Focus(); } } or simply put focus to the element when the control receives the focus: private void radToggleSwitch_GotFocus(object sender, EventArgs e) { this.radToggleSwitch1.ToggleSwitchElement.Focus(); }
To reproduce: public class RadForm1 { private RadButtonElement btnHelp; private void RadForm1_Load(object sender, EventArgs e) { btnHelp = new RadImageButtonElement(); btnHelp.AutoSize = true; btnHelp.ShowBorder = false; btnHelp.Image = My.Resources.Resources.help; btnHelp.DisplayStyle = DisplayStyle.Image; btnHelp.ButtonFillElement.Visibility = ElementVisibility.Hidden; btnHelp.ClickMode = ClickMode.Release; btnHelp.Click += btnHelp_Click; this.FormElement.TitleBar.SystemButtons.Children.Insert(0, btnHelp); } private void btnHelp_Click(object sender, EventArgs e) { Process.Start("http://www.telerik.com"); } public RadForm1() { Load += RadForm1_Load; } } Workaround: Use the Press ClikMode.
To reproduce: - Set the IsThreeState to true. - Set the state to Indeterminate. - Disable the checkbox. - Set the state to checked. - The state is not changed. This is working fine if another state is used before disabling the control. Workaround: - Always set the state before you disable the control.
The following themes have differences: ControlDefault, Office2010Silver, Office2013Dark, Office2013Light, TelerikMetro, TelerikMetroBlue, TelerikMetroTouch To reproduce: this.radSplitButton1.DropDownButtonElement.ArrowButton.Enabled = false; this.radSplitButtonElement1.ArrowButton.Enabled = false;
Setting check box to be indeterminate and disabled in design time results in incorrect state when the application is started. Setting those states after the InitializeComponent call works fine.