Marek Kruk
Top achievements
Rank 1
Marek Kruk
asked on 06 Aug 2012, 12:17 PM
Hi,
in my scenario when i add new node i need select name from commbobox or input new name. How to replace the current editor of the combobox control.
Thank you so much
Marek.
in my scenario when i add new node i need select name from commbobox or input new name. How to replace the current editor of the combobox control.
Thank you so much
Marek.
2 Answers, 1 is accepted
0
Accepted
Hello Marek,
Thank you for writing.
Please take a look at our Demo application > TreeView > Manipulate data > Editing, for example of custom editors in RadTreeView. Here is a code snippet of example:
I hope this helps.
Greetings,
Julian Benkov
the Telerik team
Thank you for writing.
Please take a look at our Demo application > TreeView > Manipulate data > Editing, for example of custom editors in RadTreeView. Here is a code snippet of example:
using
System;
using
System.Data;
using
System.Drawing;
using
Telerik.QuickStart.WinControls;
using
Telerik.WinControls;
using
Telerik.WinControls.UI;
namespace
Telerik.Examples.WinControls.TreeView.Editing
{
/// <summary>
/// Form code
/// </summary>
public
partial
class
Form1 : ExamplesForm
{
public
Form1()
{
InitializeComponent();
this
.SelectedControl =
this
.radTreeView1;
}
private
void
LoadData()
{
DataTable table =
new
DataTable();
table.Columns.Add(
"ID"
,
typeof
(
int
));
table.Columns.Add(
"ParentID"
,
typeof
(
int
));
table.Columns.Add(
"PropertyName"
,
typeof
(
string
));
table.Columns.Add(
"PropertyValue"
,
typeof
(PropertyHelper));
this
.radPanel1.PanelElement.PanelText.ForeColor = Color.White;
table.Rows.Add(0,
null
,
"Panel"
,
null
);
table.Rows.Add(1, 0,
"Text"
,
new
PropertyHelper(radPanel1,
"Text"
));
table.Rows.Add(2, 0,
"Appearance"
,
null
);
table.Rows.Add(3, 0,
"Shape"
,
null
);
table.Rows.Add(4, 2,
"Fore color"
,
new
PropertyHelper(radPanel1.PanelElement.PanelText,
"ForeColor"
));
table.Rows.Add(5, 2,
"Back color"
,
new
PropertyHelper(radPanel1.PanelElement.PanelFill,
"BackColor"
));
table.Rows.Add(6, 2,
"Border color"
,
new
PropertyHelper(radPanel1.PanelElement.PanelBorder,
"ForeColor"
));
table.Rows.Add(7, 2,
"Border width"
,
new
PropertyHelper(radPanel1.PanelElement.PanelBorder,
"Width"
));
table.Rows.Add(8, 3,
"Corner radius"
,
new
PropertyHelper(radPanel1.PanelElement,
"Shape"
));
this
.radTreeView1.ChildMember =
"ID"
;
this
.radTreeView1.ParentMember =
"ParentID"
;
this
.radTreeView1.DisplayMember =
"PropertyValue"
;
this
.radTreeView1.DataSource = table;
}
protected
override
void
OnLoad(EventArgs e)
{
this
.AutoScroll =
false
;
base
.OnLoad(e);
LoadData();
this
.radTreeView1.NodeFormatting +=
new
TreeNodeFormattingEventHandler(radTreeView1_NodeFormatting);
this
.radTreeView1.ValueChanging +=
new
TreeNodeValueChangingEventHandler(radTreeView1_ValueChanging);
this
.radTreeView1.Editing +=
new
TreeNodeEditingEventHandler(radTreeView1_Editing);
this
.radTreeView1.EditorInitialized +=
new
TreeNodeEditorInitializedEventHandler(radTreeView1_EditorInitialized);
this
.radTreeView1.EditorRequired +=
new
RadTreeView.EditorRequiredHandler(radTreeView1_EditorRequired);
this
.radTreeView1.ItemHeight = 27;
this
.radTreeView1.AllowAdd =
false
;
this
.radTreeView1.AllowRemove =
false
;
this
.radTreeView1.ExpandAnimation = ExpandAnimation.None;
this
.radTreeView1.AllowDefaultContextMenu =
true
;
this
.radTreeView1.ExpandAll();
}
void
radTreeView1_Editing(
object
sender, TreeNodeEditingEventArgs e)
{
PropertyHelper helper = e.Node.Value
as
PropertyHelper;
if
(helper ==
null
)
{
e.Cancel =
true
;
}
}
protected
override
void
OnSizeChanged(EventArgs e)
{
base
.OnSizeChanged(e);
if
(
this
.radPanel4 !=
null
)
{
int
width =
this
.ClientSize.Width;
int
height =
this
.ClientSize.Height;
height -=
this
.radPanel4.Height +
this
.radPanel3.Height;
height /= 2;
this
.radPanel3.Location =
new
Point((width -
this
.radPanel4.Width) / 2, height);
this
.radPanel4.Location =
new
Point((width -
this
.radPanel4.Width) / 2, height +
this
.radPanel3.Height);
}
}
private
void
radCheckBoxAllowEdit_ToggleStateChanged(
object
sender, StateChangedEventArgs args)
{
this
.radTreeView1.AllowEdit = args.ToggleState == Telerik.WinControls.Enumerations.ToggleState.On;
}
private
void
radTreeView1_NodeFormatting(
object
sender, TreeNodeFormattingEventArgs args)
{
DataRowView rowView = (DataRowView)args.Node.DataBoundItem;
string
propertyName = (
string
)rowView[
"PropertyName"
];
object
propertyValue = rowView[
"PropertyValue"
];
if
(propertyValue != DBNull.Value)
{
if
(args.NodeElement.Children.Count == 4)
{
LightVisualElement descriptionElement =
new
LightVisualElement();
descriptionElement.StretchHorizontally =
false
;
descriptionElement.Font = ((LightVisualElement)args.NodeElement.Children[3]).Font;
descriptionElement.TextAlignment = ContentAlignment.MiddleLeft;
args.NodeElement.Children.Insert(3, descriptionElement);
}
((LightVisualElement)args.NodeElement.Children[3]).Text = propertyName +
": "
;
args.NodeElement.ContentElement.ForeColor = Color.Blue;
args.NodeElement.ContentElement.Text = propertyValue.ToString();
}
else
{
if
(args.NodeElement.Children.Count == 5)
{
args.NodeElement.Children.RemoveAt(3);
}
args.NodeElement.ContentElement.Text =
"<html><b>"
+ propertyName;
args.NodeElement.ContentElement.ForeColor = Color.Black;
}
}
private
void
radTreeView1_ValueChanging(
object
sender, TreeNodeValueChangingEventArgs e)
{
PropertyHelper helper = (PropertyHelper)e.OldValue;
if
(helper.ValueType ==
typeof
(System.Single))
{
helper.Value = Convert.ToSingle(e.NewValue);
}
else
if
(helper.ValueType ==
typeof
(Color))
{
helper.Value = Color.FromName(Convert.ToString(e.NewValue));
}
else
if
(helper.ValueType ==
typeof
(ElementShape))
{
helper.Value =
new
RoundRectShape(Convert.ToInt32(e.NewValue));
}
else
{
helper.Value = e.NewValue;
}
e.NewValue = helper;
}
private
void
radTreeView1_EditorInitialized(
object
sender, TreeNodeEditorInitializedEventArgs e)
{
TreeViewDropDownListEditor editor = e.Editor
as
TreeViewDropDownListEditor;
if
(editor !=
null
)
{
RadDropDownListElement listElement = (RadDropDownListElement)editor.EditorElement;
listElement.DropDownStyle = RadDropDownStyle.DropDownList;
if
(listElement.Items.Count == 0)
{
listElement.Items.Add(
new
RadListDataItem(
"White"
,
"White"
));
listElement.Items.Add(
new
RadListDataItem(
"Black"
,
"Black"
));
listElement.Items.Add(
new
RadListDataItem(
"Gray"
,
"Gray"
));
listElement.Items.Add(
new
RadListDataItem(
"Red"
,
"Red"
));
listElement.Items.Add(
new
RadListDataItem(
"Blue"
,
"Blue"
));
listElement.Items.Add(
new
RadListDataItem(
"Green"
,
"Green"
));
listElement.Items.Add(
new
RadListDataItem(
"Yellow"
,
"Yellow"
));
}
listElement.SelectedValue = ((PropertyHelper)e.Node.Value).ToString();
}
}
private
void
radTreeView1_EditorRequired(
object
sender, TreeNodeEditorRequiredEventArgs e)
{
if
(e.Node.Value == DBNull.Value)
{
return
;
}
PropertyHelper helper = (PropertyHelper)e.Node.Value;
if
(helper !=
null
)
{
if
(helper.ValueType ==
typeof
(System.Single) || helper.ValueType ==
typeof
(ElementShape))
{
e.EditorType =
typeof
(TreeViewSpinEditor);
}
else
if
(helper.ValueType ==
typeof
(
string
))
{
e.EditorType =
typeof
(TreeViewTextBoxEditor);
}
else
if
(helper.ValueType ==
typeof
(Color))
{
e.EditorType =
typeof
(TreeViewDropDownListEditor);
}
}
}
}
}
using
System.ComponentModel;
using
System.Drawing.Design;
using
System.Windows.Forms;
namespace
Telerik.WinControls.UI
{
/// <summary>
/// Represents a spin editor.
/// </summary>
[ToolboxItem(
false
)]
public
class
TreeViewSpinEditor : BaseSpinEditor
{
#region Overrides
protected
override
void
OnKeyDown(KeyEventArgs e)
{
BaseSpinEditorElement editorElement =
this
.EditorElement
as
BaseSpinEditorElement;
TreeNodeElement treeNodeElement =
this
.OwnerElement
as
TreeNodeElement;
if
(treeNodeElement !=
null
)
{
switch
(e.KeyCode)
{
case
Keys.Return:
if
(e.Modifiers != Keys.Control)
{
editorElement.Validate();
treeNodeElement.TreeViewElement.EndEdit();
}
break
;
case
Keys.Escape:
treeNodeElement.TreeViewElement.CancelEdit();
break
;
case
Keys.Delete:
if
(selectionLength == editorElement.TextBoxItem.TextLength)
{
editorElement.Text =
null
;
}
break
;
}
}
}
protected
override
void
OnKeyUp(KeyEventArgs e)
{
BaseSpinEditorElement editorElement =
this
.EditorElement
as
BaseSpinEditorElement;
TreeNodeElement treeNodeElement =
this
.OwnerElement
as
TreeNodeElement;
if
(treeNodeElement !=
null
)
{
switch
(e.KeyCode)
{
case
Keys.Right:
if
((RightToLeft && selectionStart == 0) || (!RightToLeft && selectionStart == editorElement.Text.Length))
{
editorElement.Validate();
}
break
;
case
Keys.Left:
if
((RightToLeft && selectionStart == editorElement.Text.Length) || (!RightToLeft && selectionStart == 0 && selectionLength == 0))
{
editorElement.Validate();
}
break
;
}
}
}
public
override
void
OnLostFocus()
{
TreeNodeElement treeNode =
this
.OwnerElement
as
TreeNodeElement;
if
(treeNode !=
null
&&
treeNode.IsInValidState(
true
) &&
!treeNode.ElementTree.Control.Focused &&
!treeNode.ElementTree.Control.ContainsFocus &&
!treeNode.TreeViewElement.IsPerformingEndEdit)
{
treeNode.TreeViewElement.EndEdit();
}
}
#endregion
}
}
using
System.Windows.Forms;
namespace
Telerik.WinControls.UI
{
public
class
TreeViewTextBoxEditor : BaseTextBoxEditor
{
#region Overrides
protected
override
void
OnKeyDown(KeyEventArgs e)
{
TreeNodeElement nodeElement =
this
.OwnerElement
as
TreeNodeElement;
if
(nodeElement !=
null
)
{
switch
(e.KeyCode)
{
case
Keys.Escape:
nodeElement.TreeViewElement.CancelEdit();
break
;
case
Keys.Enter:
nodeElement.TreeViewElement.EndEdit();
break
;
case
Keys.Up:
if
(!
this
.Multiline || (selectionLength == 0 && isAtFirstLine))
{
nodeElement.TreeViewElement.EndEdit();
nodeElement.TreeViewElement.ProcessKeyDown(e);
}
break
;
case
Keys.Down:
if
(!
this
.Multiline || (selectionLength == 0 && isAtLastLine))
{
nodeElement.TreeViewElement.EndEdit();
nodeElement.TreeViewElement.ProcessKeyDown(e);
}
break
;
}
}
}
protected
override
void
OnLostFocus()
{
TreeNodeElement treeNode =
this
.OwnerElement
as
TreeNodeElement;
if
(treeNode !=
null
&&
treeNode.IsInValidState(
true
) &&
!treeNode.ElementTree.Control.Focused &&
!treeNode.ElementTree.Control.ContainsFocus &&
!treeNode.TreeViewElement.IsPerformingEndEdit)
{
treeNode.TreeViewElement.EndEdit();
}
}
#endregion
}
}
using
System.Windows.Forms;
using
Telerik.WinControls.Design;
namespace
Telerik.WinControls.UI
{
/// <summary>
/// Represents a DropDownList editor.
/// </summary>
[RadToolboxItem(
false
)]
public
class
TreeViewDropDownListEditor : BaseDropDownListEditor
{
#region Overrides
protected
override
void
OnKeyDown(KeyEventArgs e)
{
BaseDropDownListEditorElement editorElement =
this
.EditorElement
as
BaseDropDownListEditorElement;
this
.selectionStart = editorElement.SelectionStart;
TreeNodeElement nodeElement =
this
.OwnerElement
as
TreeNodeElement;
if
(nodeElement !=
null
)
{
if
(e.KeyCode == Keys.Enter && e.Modifiers != Keys.Control)
{
nodeElement.TreeViewElement.EndEdit();
}
else
if
(e.KeyCode == Keys.Escape)
{
nodeElement.TreeViewElement.CancelEdit();
e.Handled =
true
;
}
else
if
(e.KeyCode == Keys.Left || e.KeyCode == Keys.Right)
{
e.Handled =
true
;
}
else
if
(e.KeyCode == Keys.Down && e.Modifiers == Keys.Alt)
{
((RadDropDownListElement)
this
.EditorElement).ShowPopup();
e.Handled =
true
;
}
}
}
public
override
void
OnValueChanged()
{
base
.OnValueChanged();
if
(!((BaseDropDownListEditorElement)
this
.EditorElement).IsPopupOpen)
{
TreeNodeElement element =
this
.OwnerElement
as
TreeNodeElement;
if
(element !=
null
&& element.TreeViewElement !=
null
&& element.TreeViewElement.IsEditing)
{
element.TreeViewElement.EndEdit();
}
}
}
protected
override
void
OnLostFocus()
{
base
.OnLostFocus();
TreeNodeElement treeNode =
this
.OwnerElement
as
TreeNodeElement;
if
(treeNode !=
null
&&
treeNode.IsInValidState(
true
) &&
!treeNode.ElementTree.Control.Focused &&
!treeNode.ElementTree.Control.ContainsFocus &&
!treeNode.TreeViewElement.IsPerformingEndEdit)
{
treeNode.TreeViewElement.EndEdit();
}
}
#endregion
}
}
I hope this helps.
Greetings,
Julian Benkov
the Telerik team
RadControls for WinForms Q2'12 release is now live! Check out what's new or download a free trial >>
0
Marek Kruk
Top achievements
Rank 1
answered on 08 Aug 2012, 03:23 PM
Thanks a lot
Marek
Marek