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("!");
}
}
Run Code Online (Sandbox Code Playgroud)
如果我尝试使用上面的测试代码将项目拖动到datagridview,我从data.ToString()ok 接收正确的数据,但我无法定位行或单元格.
将RowIndex.ToString()返回"-1",而我的if语句返回false,所以从来没有如果编码块进入.
我的代码出了什么问题?
Mic*_*l G 12
我相信从DragAndDrop传递的坐标是屏幕空间坐标.我认为你需要将点数转换为客户端坐标空间.
Point dscreen = new Point(e.X, e.Y);
Point dclient = dataGridView1.PointToClient(dscreen );
DataGridView.HitTestInfo hitTest = dataGridView1.HitTest(dclient.X,dclient.Y);
Run Code Online (Sandbox Code Playgroud)
然后hitTest.Row将有行索引
| 归档时间: |
|
| 查看次数: |
5264 次 |
| 最近记录: |