A
Ajay Krishnan Thampi
I have a slight problem implementing 'drag and drop' from a datagrid
to a tree-view. I have pasted my code below. Someone please advice me
on what to do...pretty blur right now.
==code==
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.IO;
namespace DragDropTry
{
/// <summary>
/// Summary description for Form1.
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.DataGrid grdSearch;
private System.Windows.Forms.TreeView tvMain;
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.Container components = null;
public Form1()
{
//
// Required for Windows Form Designer support
//
InitializeComponent();
//
// TODO: Add any constructor code after InitializeComponent call
//
}
/// <summary>
/// Clean up any resources being used.
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.grdSearch = new System.Windows.Forms.DataGrid();
this.tvMain = new System.Windows.Forms.TreeView();
((System.ComponentModel.ISupportInitialize)(this.grdSearch)).BeginInit();
this.SuspendLayout();
//
// grdSearch
//
this.grdSearch.DataMember = "";
this.grdSearch.HeaderForeColor =
System.Drawing.SystemColors.ControlText;
this.grdSearch.Location = new System.Drawing.Point(216, 72);
this.grdSearch.Name = "grdSearch";
this.grdSearch.Size = new System.Drawing.Size(336, 216);
this.grdSearch.TabIndex = 0;
this.grdSearch.MouseUp += new
System.Windows.Forms.MouseEventHandler(this.grdSearch_MouseUp_1);
this.grdSearch.DragOver += new
System.Windows.Forms.DragEventHandler(this.grdSearch_DragOver);
this.grdSearch.DragEnter += new
System.Windows.Forms.DragEventHandler(this.grdSearch_DragEnter);
//
// tvMain
//
this.tvMain.ImageIndex = -1;
this.tvMain.Location = new System.Drawing.Point(16, 72);
this.tvMain.Name = "tvMain";
this.tvMain.SelectedImageIndex = -1;
this.tvMain.Size = new System.Drawing.Size(176, 168);
this.tvMain.TabIndex = 1;
this.tvMain.DragEnter += new
System.Windows.Forms.DragEventHandler(this.tvMain_DragEnter);
this.tvMain.ItemDrag += new
System.Windows.Forms.ItemDragEventHandler(this.tvMain_ItemDrag);
this.tvMain.DragDrop += new
System.Windows.Forms.DragEventHandler(this.tvMain_DragDrop);
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(576, 454);
this.Controls.Add(this.tvMain);
this.Controls.Add(this.grdSearch);
this.Name = "Form1";
this.Text = "Form1";
this.Load += new System.EventHandler(this.Form1_Load);
this.MouseUp += new
System.Windows.Forms.MouseEventHandler(this.grdSearch_MouseUp_1);
this.DragOver += new
System.Windows.Forms.DragEventHandler(this.grdSearch_DragOver);
this.DragDrop += new
System.Windows.Forms.DragEventHandler(this.tvMain_DragDrop);
this.DragEnter += new
System.Windows.Forms.DragEventHandler(this.tvMain_DragEnter);
((System.ComponentModel.ISupportInitialize)(this.grdSearch)).EndInit();
this.ResumeLayout(false);
}
#endregion
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
private void Form1_Load(object sender, System.EventArgs e)
{
DataSet ds = new DataSet();
ds.ReadXml("searchResult.xml");
DataView dv = new DataView();
dv = ds.Tables[0].DefaultView;
grdSearch.DataSource = dv;
grdSearch.TableStyles.Clear();
DataGridTableStyle ts1 = new DataGridTableStyle();
ts1.MappingName = dv.Table.TableName;
System.Windows.Forms.DataGridBoolColumn col1 = new
DataGridBoolColumn();
col1.MappingName = "text";
col1.HeaderText = "";
col1.Width = 30;
col1.AllowNull = false;
col1.FalseValue = "False";
col1.TrueValue = "True";
System.Windows.Forms.DataGridTextBoxColumn col2 = new
DataGridTextBoxColumn();
col2.MappingName = "rec";
col2.HeaderText = "Rec";
col2.Width = 30;
System.Windows.Forms.DataGridTextBoxColumn col3 = new
DataGridTextBoxColumn();
col3.MappingName = "title";
col3.HeaderText = "title";
col3.Width = 220;
ts1.GridColumnStyles.Add(col1);
ts1.GridColumnStyles.Add(col2);
ts1.GridColumnStyles.Add(col3);
grdSearch.TableStyles.Add(ts1);
tvMain.BeginUpdate();
tvMain.Nodes.Add(new TreeNode("AA"));
TreeNode tnn = new TreeNode("Query_" +
System.DateTime.Now.ToString("MMM-dd-yyyy") + "_" +
System.DateTime.Now.ToShortTimeString() + " " + "aaa");
tvMain.Nodes[0].Nodes.Add(tnn);
tvMain.Nodes[0].Expand();
tvMain.EndUpdate();
//grdSearch.MouseUp += new
MouseEventHandler(grdSearch_MouseUp(sender,e));
this.grdSearch.MouseUp += new
System.Windows.Forms.MouseEventHandler(this.grdSearch_MouseUp_1);
this.grdSearch.DragEnter += new
System.Windows.Forms.DragEventHandler(this.grdSearch_DragEnter);
this.grdSearch.DragOver += new
System.Windows.Forms.DragEventHandler(this.grdSearch_DragOver);
this.tvMain.DragDrop += new
System.Windows.Forms.DragEventHandler(this.tvMain_DragDrop);
this.tvMain.DragEnter += new
System.Windows.Forms.DragEventHandler(this.tvMain_DragEnter);
this.tvMain.ItemDrag += new
System.Windows.Forms.ItemDragEventHandler(this.tvMain_ItemDrag);
//tvMain.Nodes[0].Nodes.Add(new TreeNode("Query_" +
System.DateTime.Now.ToShortDateString() + "@" +
System.DateTime.Now.ToShortTimeString() + "
}
private void grdSearch_MouseUp_1(object sender,
System.Windows.Forms.MouseEventArgs e)
{
try
{
DataRowView drvSelectedGridRow =
(DataRowView)grdSearch.BindingContext
[grdSearch.DataSource,grdSearch.DataMember].Current;
string sNodeName =
drvSelectedGridRow["title"].ToString().Trim();
string sSnpID = drvSelectedGridRow[""].ToString().Trim();
TreeNode tnWrHistoryRootNode = new TreeNode(sNodeName);
tnWrHistoryRootNode.Tag = sSnpID;
string dataSource;
dataSource = grdSearch.DataSource.ToString();
grdSearch.DoDragDrop(tnWrHistoryRootNode,DragDropEffects.Move);
}
catch{}
}
private void grdSearch_DragEnter (object sender,
System.Windows.Forms.DragEventArgs e)
{
e.Effect = DragDropEffects.Move;
}
private void grdSearch_DragOver(object sender,
System.Windows.Forms.DragEventArgs e)
{
e.Effect = DragDropEffects.Move;
}
private void tvMain_DragDrop (object sender,
System.Windows.Forms.DragEventArgs e)
{
TreeNode tnNewNode = new TreeNode();
if(e.Data.GetDataPresent("System.Windows.Forms.TreeNode",false))
{
Point pt;
TreeNode tnDestinationNode = new TreeNode();
pt = tvMain.PointToClient(new Point(e.X, e.Y));
tnDestinationNode = tvMain.GetNodeAt(pt);
tnNewNode =
(TreeNode) e.Data.GetData("System.Windows.Forms.TreeNode");
int iNodeCount = tvMain.GetNodeCount(false);
if(iNodeCount == 0)
{
this.tvMain.Nodes.Add(tnNewNode);
}
else
{
if(!tnDestinationNode.Equals(tnNewNode))
{
tnDestinationNode.Nodes.Add((TreeNode) tnNewNode.Clone());
try
{
tnNewNode.Remove();
}
catch{}
tvMain.ExpandAll();
}
}
}
}
private void tvMain_DragEnter (object sender,
System.Windows.Forms.DragEventArgs e)
{
e.Effect = DragDropEffects.Move;
}
private void tvMain_ItemDrag (object sender,
System.Windows.Forms.ItemDragEventArgs e)
{
DoDragDrop(e.Item, DragDropEffects.Move);
}
}
}
to a tree-view. I have pasted my code below. Someone please advice me
on what to do...pretty blur right now.
==code==
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.IO;
namespace DragDropTry
{
/// <summary>
/// Summary description for Form1.
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.DataGrid grdSearch;
private System.Windows.Forms.TreeView tvMain;
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.Container components = null;
public Form1()
{
//
// Required for Windows Form Designer support
//
InitializeComponent();
//
// TODO: Add any constructor code after InitializeComponent call
//
}
/// <summary>
/// Clean up any resources being used.
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.grdSearch = new System.Windows.Forms.DataGrid();
this.tvMain = new System.Windows.Forms.TreeView();
((System.ComponentModel.ISupportInitialize)(this.grdSearch)).BeginInit();
this.SuspendLayout();
//
// grdSearch
//
this.grdSearch.DataMember = "";
this.grdSearch.HeaderForeColor =
System.Drawing.SystemColors.ControlText;
this.grdSearch.Location = new System.Drawing.Point(216, 72);
this.grdSearch.Name = "grdSearch";
this.grdSearch.Size = new System.Drawing.Size(336, 216);
this.grdSearch.TabIndex = 0;
this.grdSearch.MouseUp += new
System.Windows.Forms.MouseEventHandler(this.grdSearch_MouseUp_1);
this.grdSearch.DragOver += new
System.Windows.Forms.DragEventHandler(this.grdSearch_DragOver);
this.grdSearch.DragEnter += new
System.Windows.Forms.DragEventHandler(this.grdSearch_DragEnter);
//
// tvMain
//
this.tvMain.ImageIndex = -1;
this.tvMain.Location = new System.Drawing.Point(16, 72);
this.tvMain.Name = "tvMain";
this.tvMain.SelectedImageIndex = -1;
this.tvMain.Size = new System.Drawing.Size(176, 168);
this.tvMain.TabIndex = 1;
this.tvMain.DragEnter += new
System.Windows.Forms.DragEventHandler(this.tvMain_DragEnter);
this.tvMain.ItemDrag += new
System.Windows.Forms.ItemDragEventHandler(this.tvMain_ItemDrag);
this.tvMain.DragDrop += new
System.Windows.Forms.DragEventHandler(this.tvMain_DragDrop);
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(576, 454);
this.Controls.Add(this.tvMain);
this.Controls.Add(this.grdSearch);
this.Name = "Form1";
this.Text = "Form1";
this.Load += new System.EventHandler(this.Form1_Load);
this.MouseUp += new
System.Windows.Forms.MouseEventHandler(this.grdSearch_MouseUp_1);
this.DragOver += new
System.Windows.Forms.DragEventHandler(this.grdSearch_DragOver);
this.DragDrop += new
System.Windows.Forms.DragEventHandler(this.tvMain_DragDrop);
this.DragEnter += new
System.Windows.Forms.DragEventHandler(this.tvMain_DragEnter);
((System.ComponentModel.ISupportInitialize)(this.grdSearch)).EndInit();
this.ResumeLayout(false);
}
#endregion
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
private void Form1_Load(object sender, System.EventArgs e)
{
DataSet ds = new DataSet();
ds.ReadXml("searchResult.xml");
DataView dv = new DataView();
dv = ds.Tables[0].DefaultView;
grdSearch.DataSource = dv;
grdSearch.TableStyles.Clear();
DataGridTableStyle ts1 = new DataGridTableStyle();
ts1.MappingName = dv.Table.TableName;
System.Windows.Forms.DataGridBoolColumn col1 = new
DataGridBoolColumn();
col1.MappingName = "text";
col1.HeaderText = "";
col1.Width = 30;
col1.AllowNull = false;
col1.FalseValue = "False";
col1.TrueValue = "True";
System.Windows.Forms.DataGridTextBoxColumn col2 = new
DataGridTextBoxColumn();
col2.MappingName = "rec";
col2.HeaderText = "Rec";
col2.Width = 30;
System.Windows.Forms.DataGridTextBoxColumn col3 = new
DataGridTextBoxColumn();
col3.MappingName = "title";
col3.HeaderText = "title";
col3.Width = 220;
ts1.GridColumnStyles.Add(col1);
ts1.GridColumnStyles.Add(col2);
ts1.GridColumnStyles.Add(col3);
grdSearch.TableStyles.Add(ts1);
tvMain.BeginUpdate();
tvMain.Nodes.Add(new TreeNode("AA"));
TreeNode tnn = new TreeNode("Query_" +
System.DateTime.Now.ToString("MMM-dd-yyyy") + "_" +
System.DateTime.Now.ToShortTimeString() + " " + "aaa");
tvMain.Nodes[0].Nodes.Add(tnn);
tvMain.Nodes[0].Expand();
tvMain.EndUpdate();
//grdSearch.MouseUp += new
MouseEventHandler(grdSearch_MouseUp(sender,e));
this.grdSearch.MouseUp += new
System.Windows.Forms.MouseEventHandler(this.grdSearch_MouseUp_1);
this.grdSearch.DragEnter += new
System.Windows.Forms.DragEventHandler(this.grdSearch_DragEnter);
this.grdSearch.DragOver += new
System.Windows.Forms.DragEventHandler(this.grdSearch_DragOver);
this.tvMain.DragDrop += new
System.Windows.Forms.DragEventHandler(this.tvMain_DragDrop);
this.tvMain.DragEnter += new
System.Windows.Forms.DragEventHandler(this.tvMain_DragEnter);
this.tvMain.ItemDrag += new
System.Windows.Forms.ItemDragEventHandler(this.tvMain_ItemDrag);
//tvMain.Nodes[0].Nodes.Add(new TreeNode("Query_" +
System.DateTime.Now.ToShortDateString() + "@" +
System.DateTime.Now.ToShortTimeString() + "
}
private void grdSearch_MouseUp_1(object sender,
System.Windows.Forms.MouseEventArgs e)
{
try
{
DataRowView drvSelectedGridRow =
(DataRowView)grdSearch.BindingContext
[grdSearch.DataSource,grdSearch.DataMember].Current;
string sNodeName =
drvSelectedGridRow["title"].ToString().Trim();
string sSnpID = drvSelectedGridRow[""].ToString().Trim();
TreeNode tnWrHistoryRootNode = new TreeNode(sNodeName);
tnWrHistoryRootNode.Tag = sSnpID;
string dataSource;
dataSource = grdSearch.DataSource.ToString();
grdSearch.DoDragDrop(tnWrHistoryRootNode,DragDropEffects.Move);
}
catch{}
}
private void grdSearch_DragEnter (object sender,
System.Windows.Forms.DragEventArgs e)
{
e.Effect = DragDropEffects.Move;
}
private void grdSearch_DragOver(object sender,
System.Windows.Forms.DragEventArgs e)
{
e.Effect = DragDropEffects.Move;
}
private void tvMain_DragDrop (object sender,
System.Windows.Forms.DragEventArgs e)
{
TreeNode tnNewNode = new TreeNode();
if(e.Data.GetDataPresent("System.Windows.Forms.TreeNode",false))
{
Point pt;
TreeNode tnDestinationNode = new TreeNode();
pt = tvMain.PointToClient(new Point(e.X, e.Y));
tnDestinationNode = tvMain.GetNodeAt(pt);
tnNewNode =
(TreeNode) e.Data.GetData("System.Windows.Forms.TreeNode");
int iNodeCount = tvMain.GetNodeCount(false);
if(iNodeCount == 0)
{
this.tvMain.Nodes.Add(tnNewNode);
}
else
{
if(!tnDestinationNode.Equals(tnNewNode))
{
tnDestinationNode.Nodes.Add((TreeNode) tnNewNode.Clone());
try
{
tnNewNode.Remove();
}
catch{}
tvMain.ExpandAll();
}
}
}
}
private void tvMain_DragEnter (object sender,
System.Windows.Forms.DragEventArgs e)
{
e.Effect = DragDropEffects.Move;
}
private void tvMain_ItemDrag (object sender,
System.Windows.Forms.ItemDragEventArgs e)
{
DoDragDrop(e.Item, DragDropEffects.Move);
}
}
}