我想暂时将一些数据从treeview中删除到datagridview,但是datagrid视图已经从xml文件中加载了一些数据。
有人请向我解释一下这种机制。
这是我的拖放功能://如果数据网格视图中没有数据,它可以正常工作。
private void DataGridView1OnDragDrop(object sender, DragEventArgs e)
{
Point dscreen = new Point(e.X, e.Y);
Point dclient = dataGridView1.PointToClient(dscreen);
DataGridView.HitTestInfo hitTest = dataGridView1.HitTest(dclient.X, dclient.Y);
if (hitTest.ColumnIndex == 0 && hitTest.Type == DataGridViewHitTestType.Cell)
{
e.Effect = DragDropEffects.Move;
//dataGridView1.Rows.Insert(hitTest.RowIndex, "hitTest", "hitTest", "hitTest", "hitTest");
var data = (object[]) e.Data.GetData(typeof(string[]));
dataGridView1.Rows.Insert(hitTest.RowIndex, data);
}
else
{
e.Effect = DragDropEffects.None;
}
dataGridView1.AllowUserToAddRows = false;
}
对于datagrid:
XmlReader xmlFile;
xmlFile = XmlReader.Create("Product.xml", new XmlReaderSettings());
DataSet ds = new DataSet();
ds.ReadXml(xmlFile);
dataGridView1.DataSource = ds.Tables[0];
对于Treeview:
var filename = @"C:\Check.xml";
//First, we'll load the Xml document
XmlDocument xDoc = new XmlDocument();
xDoc.Load(filename);
答案 0 :(得分:1)
您应该将添加到控件的数据源,而不是将拖放数据添加到控件中。
// will allow you to drop your data anywhere on gridview where a cell is
if (hitTest.Type == DataGridViewHitTestType.Cell)
{
e.Effect = DragDropEffects.Move;
var data = (object[])e.Data.GetData(typeof(string[]));
// causes error - if there is already data bound to the control
// see image below
//dataGridView1.Rows.Insert(hitTest.RowIndex, data);
DataTable dt = (DataTable) dataGridView1.DataSource;
DataRow dr = dt.NewRow();
dr.ItemArray = data;
dt.Rows.Add(dr);
}
DebugMode中的错误消息
对我来说很好 - 如果您的代码中出现任何错误,请告诉我