工具: Visual Studio 2010 旗舰版, 语言 C#, 数据库MySql
嗨,
我已经搜索了一段时间,但迄今为止没有找到任何合适的解决方案。
我有一个绑定(bind) DataGridView 的表单,其中包含 5 列:ProductID、ProductName、Qty、Price 和 Amount。正常输入数据后,用户可以点击按钮将数据保存到Mysql数据库中,没有问题。
目前,用户手动输入 ProductID,然后执行 Sql 命令来获取 ProductName 并将其设置到 DataGridView ProductName 列。我需要一种方法来在获得焦点时在 ProductID 列下方显示 ListView,以便用户可以从 ListView 中选择产品(ProductID 和 ProductName)并将其设置为用户当前正在使用的 DataGridView 的行。
当用户单击或获得焦点时,是否可以在 ProductID 单元格下方显示 ListView ?
谢谢
艾哈迈德
最佳答案
尝试下面的代码,我认为这是一个好的开始 - 但肯定需要改进。但请注意,正如我在上面的评论中提到的,您应该处理特殊情况,例如滚动甚至扩展网格,以便 ListView
不会隐藏 DataGridView
行。
在您的 DataGridView
上订阅 MouseMove
事件并存储鼠标位置:
private void dataGridView1_MouseMove(object sender, MouseEventArgs e)
{
mouseLoc = e.Location;
}
您可以将 mouseLoc
设置为属性。
private Point mouseLoc = new Point();
并且还可以使用以下代码订阅 CellMouseDown
事件:
private void dataGridView1_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)
{
listView1.Location = new Point(mouseLoc.X, mouseLoc.Y + dataGridView1[e.ColumnIndex, e.RowIndex].Size.Height);
listView1.BringToFront();
listView1.Refresh();
}
关于c# - 在 C# Winform 中设置 ListView 的位置位于 DataGridView Active Row 下方,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21301140/