Hi all,
some time ago starting from some code I found here, I wrote a method to add a button in a dropdownlist (I have used a label with an image instead of a button), it seems to work fine but if I use it with a dropdownlist that is contained in a RadWizard or RadTreeView page, the button is shown only if that page is the selected page when the form is loaded, but is not shown when I click on a Tab move to the page that contains the dropdownlist.
I usually add call the method in the Load event of the form, but I've tried tu use other events with effects.
This is the method :
public static void ButtonizeDropDown(RadDropDownList ddlistControl, EventHandler OnClick, out RadLabelElement btnElement) {
btnElement = null;
EventHandler onLabelElementClicked = (object s, EventArgs ea) => { ddlistControl.SelectedIndex = -1; };
if (OnClick != null) onLabelElementClicked = (object s, EventArgs ea) => { OnClick(ddlistControl,ea); };
ddlistControl.BeginInit();
RadLabelElement lbl = new RadLabelElement();
btnElement = lbl;
lbl.Click += onLabelElementClicked;
lbl.Margin = new Padding(0, 0, 0, 0);
lbl.AutoSize = false;
lbl.Text = "";
lbl.Tag = ddlistControl;
lbl.Image = new Bitmap(global::K2O.UI.Properties.Resources.Delete_Thin_BW_UltraLight_12);
lbl.ImageAlignment = ContentAlignment.MiddleCenter;
lbl.TextAlignment = ContentAlignment.MiddleCenter;
lbl.TextImageRelation = TextImageRelation.Overlay;
lbl.Alignment = ContentAlignment.MiddleCenter;
ddlistControl.DropDownListElement.EditableElement.ShouldPaint = false;
RadDropDownTextBoxElement textBoxElement = ddlistControl.DropDownListElement.EditableElement.TextBox;
RadTextBoxItem textboxitem = textBoxElement.TextBoxItem;
ddlistControl.DropDownListElement.EditableElement.TextBox.Children.Remove(textboxitem);
lbl.Size = new System.Drawing.Size(textBoxElement.Size.Height, textBoxElement.Size.Height);
StackLayoutElement stackPanel = new StackLayoutElement();
stackPanel.Orientation = Orientation.Horizontal;
stackPanel.Margin = new Padding(0, 0, 0, 0);
stackPanel.Size = lbl.Size;
stackPanel.Children.Add(lbl);
DockLayoutPanel dockPanel = new DockLayoutPanel();
dockPanel.Size = lbl.Size;
dockPanel.Children.Add(stackPanel);
dockPanel.Children.Add(textboxitem);
DockLayoutPanel.SetDock(textboxitem, Dock.Right);
DockLayoutPanel.SetDock(stackPanel, Dock.Left);
ddlistControl.DropDownListElement.EditableElement.TextBox.Children.Add(dockPanel);
if (ddlistControl.DropDownStyle == RadDropDownStyle.DropDownList) {
textboxitem.ReadOnly = true;
ddlistControl.DropDownListElement.EditableElement.TextBox.Visibility = ElementVisibility.Visible;
ddlistControl.DropDownListElement.EditableElement.TextBox.Enabled = true;
lbl.Enabled = true;
lbl.Visibility = ElementVisibility.Visible;
}
//Per fare in modo che tutti gli elementi del controllo acquistino lo stesso stato (Enabled/Disabled) del controllo stesso;
ddlistControl.Enabled = !ddlistControl.Enabled;
ddlistControl.Invalidate();
ddlistControl.Enabled = !ddlistControl.Enabled;
ddlistControl.EndInit();
}
can you please tell me what I must change to have it work in every page of a RadPageView or RadWizard ?
Thanks
I have 4 tabs in a PageView Strip mode where 2nd tabs visibility is false that's why empty space found in continuity of 4 tabs.
how can i set property to auto arrange tabs on page load in c# windows form.
Hi,
Can i add shapes from RadDiagramToolbox to RadDiagram by double clicking on the items instead of drag and drop?
Thanks.
I have a datetimepicker field where I want to change the background colour of special days.
I have set up event handlers for the clicking of the arrows but what event is fired when the user changes the month drop down on the picker.
My code as it stands is
public form1()
{
InitializeComponent();
RadDateTimePickerCalendar calendarBehavior = this.dtDOI.DateTimePickerElement.GetCurrentBehavior() as RadDateTimePickerCalendar;
calendar = calendarBehavior.Calendar as RadCalendar;
RadCalendarElement calendarElement = calendar.CalendarElement as RadCalendarElement;
MonthViewElement monthView = calendarBehavior.Calendar.CalendarElement.CalendarVisualElement as MonthViewElement;
calendarElement.NextButton.Click += new EventHandler(calendar_SelectionChanged);
calendarElement.PreviousButton.Click += new EventHandler(calendar_SelectionChanged);
calendarElement.FastBackwardButton.Click += new EventHandler(calendar_SelectionChanged);
calendarElement.FastForwardButton.Click += new EventHandler(calendar_SelectionChanged);
}
void calendar_SelectionChanged(object sender, EventArgs e)
{
FormatCalendar();
}
private void FormatCalendar()
{
RadDateTimePickerCalendar calendarBehavior = this.dtDOI.DateTimePickerElement.GetCurrentBehavior() as RadDateTimePickerCalendar;
RadCalendar calendar = calendarBehavior.Calendar as RadCalendar;
MonthViewElement monthView = calendarBehavior.Calendar.CalendarElement.CalendarVisualElement as MonthViewElement;
RadCalendarDay[] specialDays = calendar.SpecialDays.ToArray();
List<DateTime> dates = ExtractSpecialdates(specialDays);
foreach (CalendarCellElement cell in monthView.TableElement.Children)
{
if (dates.Contains(cell.Date))
{
cell.BackColor = Color.Green;
}
else
{
cell.BackColor = Color.White;
}
}
}
If I use calendar.ElementRender += new RenderElementEventHandler(calender_SelectionChanged); I get stuck in a perpetual loop.
Or is there a better way of doing things?
Hi, according to docs, High DPI for RadControls should run smoothly when the controls are placed on a RadForm.
Whats the strategy if the application uses standard Dialogs (not based on RadForm)?
Per Monitor DPI awareness assuming running on newest Win10 Update and .net 4.7?
Regards
Erwin
How do you resize a document window when it is changed to floating. Also, how do you change the title bar text? I am using the FloatingWindowCreated event. I have the statements listed below included already and they are working. Nothing I have tried has worked for setting the size and title text.
e.Window.AutoSize = True
e.Window.ThemeName = myThemeName
e.Window.MaximizeBox = True
e.Window.MinimizeBox = True
e.Window.Icon = My.Resources.TMBIcon
Hello,
I have a requirement to display grid view of decimal value columns with the exception that I need to show comboboxes in the first row of the grid view. Comboboxes will have three non-editable values. How to achieve this?