c# - 在 C# Winform 中设置 ListView 的位置位于 DataGridView Active Row 下方

标签 c# mysql listview datagridview

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

相关文章:

android - 如何更改 scrollView 中的 View 位置,以将其固定在屏幕顶部

c# - HttpClient/在地铁应用程序中

MySQL 查询 - 如果找不到条目,​​如何返回占位符值而不是 NULL

Mysql超过2个字段的唯一索引,是否需要为该组的单个字段建立单独的索引以提高性能?

mysql - sql : check min and max range values with database min and max range values

android listview下拉创建新行

android - 如何使用后退按钮显示上一个 ListView

c# - 更改基本 MVVM 的当前实现以遵守 SOLID 模式

c# - 使用 Ninject 绑定(bind)同一类型的多个版本

c# - 无法加载文件或程序集...System.Data.Entity.dll