Visual C# 2005 中查找并选择要突出显示的数据视图中的行的问题

本文关键字:问题 显示 数据 视图 2005 查找 Visual 选择 | 更新日期: 2023-09-27 18:34:47

>我有一个数据表,里面装满了各种行,每行都有几列(即ID,名称,描述(。

我正在尝试实现一个搜索按钮,用户通过组合框(例如 ID 或名称(选择一列,并在文本框中键入他们请求的搜索,单击搜索按钮后,我希望选中他们正在寻找的行并在屏幕上突出显示,而无需重新调整表,因为键是将所有内容保持表格最初填充的顺序。 另一个注意事项是我希望所有项目仍然可见,所以我不会使用 .rowfilter,因为它已经在单独的按钮中实现。 我已经弄清楚了如何通过它的索引找到该行,并相应地更新了代码。只是想知道我如何在所述行上居中屏幕并突出显示它而不会混淆表格的顺序

这是我到目前为止所拥有的:

private void buttonSearch_Click(object sender, EventArgs e)
{
    string query = textSearch.Text;
    int intquery = Int32.Parse(query);
    DataTable dt = GetAlarmTable();
    DataView dv = new DataView(dt);
    DataRow[] foundRows;
    switch (comboboxSearch.Text)
    {
         case "ID":
         {
              dv.Sort = "ID"; 
              index = dv.Find(intquery);
              foundRows = dt.Select("ID = '" + intquery + "'");
              break;
          } 
    }
//??? ???
}

如果您有代码要分享、想法或链接,请告诉我!

Visual C# 2005 中查找并选择要突出显示的数据视图中的行的问题

这是我通常使用的函数。 确保将DataGridView上的 SelectionMode 属性设置为 FullRowSelect

public static void EnsureGridRowIsSelectedAndVisible(DataGridViewRow row)
{
    if (row == null)
        return;
    row.Selected = true;
    // Center the item in the display
    row.DataGridView.FirstDisplayedScrollingRowIndex = 
        Math.Max(row.Index - Convert.ToInt32(row.DataGridView.DisplayedRowCount(false) / 2), 0);
}