c# – 如何从DragDrop事件中定位datagridview行或单元格?
发布时间:2020-12-15 23:53:49 所属栏目:百科 来源:网络整理
导读:void dataGridView1_DragDrop(object sender,DragEventArgs e) { object data = e.Data.GetData(typeof(string)); MessageBox.Show(e.X + " " + e.Y + " " + dataGridView1.HitTest(e.X,e.Y).RowIndex.ToString()); if (dataGridView1.HitTest(e.X,e.Y).Type
void dataGridView1_DragDrop(object sender,DragEventArgs e) { object data = e.Data.GetData(typeof(string)); MessageBox.Show(e.X + " " + e.Y + " " + dataGridView1.HitTest(e.X,e.Y).RowIndex.ToString()); if (dataGridView1.HitTest(e.X,e.Y).Type == DataGridViewHitTestType.Cell) { MessageBox.Show("!"); } } 如果我尝试使用上面的测试代码将项目拖动到datagridview,我会从data.ToString()中收到正确的数据,但我无法定位行或单元格. RowIndex.ToString()返回“-1”,我的if语句返回false,所以如果编码块则永远不会输入. 我的代码出了什么问题? 解决方法
我相信从DragAndDrop传递的坐标是屏幕空间坐标.
我认为你需要将点数转换为客户端坐标空间. Point dscreen = new Point(e.X,e.Y); Point dclient = dataGridView1.PointToClient(dscreen ); DataGridView.HitTestInfo hitTest = dataGridView1.HitTest(dclient.X,dclient.Y); 然后hitTest.Row将有行索引 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |