在C#Winform中将ListView的位置设置在DataGridView Active Row下面

时间:2014-01-23 06:40:45

标签: c# mysql listview datagridview

工具: 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?

由于

艾哈迈德

1 个答案:

答案 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();
}