工具: Visual Studio 2010 Ultimate, 语言C#, 数据库MySql
您好,
我正在搜索这段时间,但迄今为止没有找到任何合适的解决方案。
我有一个带有绑定DataGridView的表单,包含5列,ProductID,ProductName,Qty,Price和Amount。正常数据输入后,用户可以点击按钮将数据保存到Mysql数据库,没问题。
目前用户手动输入ProductID,然后执行Sql命令以获取ProductName并将其设置为DataGridView ProductName Column。我需要一种方法在它获得焦点时在ProductID列下面显示ListView,以便用户可以从ListView中选择产品(ProductID和ProductName)并将其设置为用户当前正在使用的DataGridView的行。
当用户点击或获得焦点时,是否可以在ProductID单元格下方显示listview?
由于
艾哈迈德
答案 0 :(得分:0)
尝试下面的代码,我认为这是一个好的开始 - 但肯定需要改进。但请不要像我在上面的评论中提到的那样,您应该处理特殊情况,例如滚动甚至展开网格,以便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();
}