Archive Browser
Download CustomTreeViewLabelEdit.zip, last updated 28/10/2013 (16.32 KB)
Download- md5: 80ba715b3ff9cc64851d7914f54af397
using System;
using System.Windows.Forms;
namespace CustomTreeViewLabelEdit
{
internal partial class MainForm : Form
{
// Specifying custom text when using the LabelEdit functionality of a TreeView
// http://cyotek.com/blog/specifying-custom-text-when-using-the-labeledit-functionality-of-a-treeview
#region Constructors
public MainForm()
{
InitializeComponent();
}
#endregion
#region Overridden Members
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
this.FillTree(normalTreeView);
this.FillTree(subclassedTreeView);
this.FillTree(notifyTreeView);
}
#endregion
#region Members
private void FillTree(TreeView treeView)
{
TreeNode root;
Random random;
random = new Random();
treeView.BeginUpdate();
root = new TreeNode
{
Name = "alpha",
Text = "Alpha",
};
foreach (string name in new[]
{
"Beta", "Gamma", "Delta", "Epsilon", "Zeta", "Eta", "Theta", "Iota", "Kappa", "Lambda", "Mu", "Nu", "Xi", "Omicron", "Pi", "Rho", "Sigma", "Tau", "Upsilon", "Phi", "Chi", "Psi", "Omega"
})
{
string value;
int imageIndex;
imageIndex = random.Next(0, imageList.Images.Count);
value = name.GetHashCode().ToString("X2");
root.Nodes.Add(new TreeNode
{
Text = string.Format("{0}: {1}", name, value),
Name = name,
Tag = value,
ImageIndex = imageIndex,
SelectedImageIndex = imageIndex
});
}
treeView.Nodes.Add(root);
root.Expand();
treeView.EndUpdate();
}
#endregion
#region Event Handlers
private void closeToolStripMenuItem_Click(object sender, EventArgs e)
{
this.Close();
}
private void normalTreeView_BeforeLabelEdit(object sender, NodeLabelEditEventArgs e)
{
// e.Label = e.Node.Name; - Readonly. Useless.
// e.Node.Text = e.Node.Name; - This will change the node text (meaning
// you have to store it somewhere so you can revert the change), but
// won't change the text inside the edit field. Also useless.
}
private void normalTreeView_KeyDown(object sender, KeyEventArgs e)
{
TreeNode node;
base.OnKeyDown(e);
node = normalTreeView.SelectedNode;
if (e.KeyCode == Keys.F2 && normalTreeView.LabelEdit && node != null && !node.IsEditing)
node.BeginEdit();
}
private void notifyTreeView_AfterLabelEdit(object sender, NodeLabelEditEventArgs e)
{
if (e.Label != null)
{
e.CancelEdit = true;
e.Node.Name = e.Label;
e.Node.Text = string.Format("{0}: {1}", e.Label, e.Node.Tag);
}
}
private void notifyTreeView_RequestEditText(object sender, NodeRequestTextEventArgs e)
{
e.Label = e.Node.Name;
}
private void renameToolStripMenuItem_Click(object sender, EventArgs e)
{
TreeView treeView;
Control focusedChild;
focusedChild = this.ActiveControl;
treeView = null;
while (focusedChild != null && treeView == null)
{
treeView = focusedChild as TreeView;
if (focusedChild is SplitContainer)
focusedChild = ((SplitContainer)focusedChild).ActiveControl;
}
if (treeView != null && treeView.SelectedNode != null)
treeView.SelectedNode.BeginEdit();
}
private void subclassedTreeView_RequestDisplayText(object sender, NodeRequestTextEventArgs e)
{
e.Node.Name = e.Label;
e.Label = string.Format("{0}: {1}", e.Label, e.Node.Tag);
}
private void subclassedTreeView_RequestEditText(object sender, NodeRequestTextEventArgs e)
{
e.Label = e.Node.Name;
}
#endregion
}
}
Donate
This software may be used free of charge, but as with all free software there are costs involved to develop and maintain.
If this site or its services have saved you time, please consider a donation to help with running costs and timely updates.
Donate