0

我有一个填充了各种行的数据表,每行都有几列(即 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;
          } 
    }
//??? ???

}

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

4

1 回答 1

0

这是我通常使用的功能。确保您将SelectionMode属性DataGridView设置为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);
}
于 2012-05-19T17:07:08.410 回答