很久没写教程了,停顿了有两年之久了。今天我们来讨论讨论 winform 中TreeView与ListView,通观两者很相似,只是一个是树形结构,一个是列表结构。
今天自己创建的群里(2175832)有个朋友问到ListView的项如何拖动到TreeView中,并生成子节点,签于麻烦,我回答比较麻烦,用BUTTON实现吧,但他觉得拖动比较方便,那当然哦!无奈帮人帮到底,送佛送到西,于是立即创建本地WINFORM 测试项目,给了点代码给他(其实他本身已经完成了一半代码量了,只是在ListView拖动项到控区域外遇到了不解之疑)
好了,废话不多说了,直接转正题吧。今天我帖了代码是两个功能的结合:
1、ListView项拖动到TreeView
2、TreeView节点项拖动到ListView中
(效果图)
主要代码实现如下:
#region
将LISTVIEW项拖动TREEVIEW中
/// <summary>
/// 对选中项指定Move的“开始拖动操作”
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void listView1_ItemDrag( object sender, System.Windows.Forms.ItemDragEventArgs e)
{
this .DoDragDrop(e.Item,DragDropEffects.Move);
}
private void listView1_DragEnter( object sender, System.Windows.Forms.DragEventArgs e)
{
e.Effect = DragDropEffects.Move;
}
private void treeView1_DragEnter( object sender, System.Windows.Forms.DragEventArgs e)
{
// 判定是否现在拖动的数据是LISTVIEW项
ListViewItem lvi = (ListViewItem)e.Data.GetData( typeof (ListViewItem));
if (lvi != null )
{
e.Effect = DragDropEffects.Move;
}
/// <summary>
/// 对选中项指定Move的“开始拖动操作”
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void listView1_ItemDrag( object sender, System.Windows.Forms.ItemDragEventArgs e)
{
this .DoDragDrop(e.Item,DragDropEffects.Move);
}
private void listView1_DragEnter( object sender, System.Windows.Forms.DragEventArgs e)
{
e.Effect = DragDropEffects.Move;
}
private void treeView1_DragEnter( object sender, System.Windows.Forms.DragEventArgs e)
{
// 判定是否现在拖动的数据是LISTVIEW项
ListViewItem lvi = (ListViewItem)e.Data.GetData( typeof (ListViewItem));
if (lvi != null )
{
e.Effect = DragDropEffects.Move;
}