C#数据网格视图等待所选行

本文关键字:等待 视图 数据 数据网 网格 | 更新日期: 2023-09-27 17:58:38

我有一个c#表单,它有一个函数,可以在sql数据库中搜索一个项目,然后在另一个窗口中弹出一个可能的结果列表。我想等到用户选择一行,然后返回结果。一切都按预期进行,但我无法想出一种有效的方法来循环等待,直到项目被选中。有什么想法吗?

显示窗口的功能:

      // Some sql crap to fill a dataset...//
      Da.Fill(Items, "Items");
      Connection.Close();
      var ItemSearch = new Window1(); // Load new window with a datagrid
      ItemSearch.Show();
      ItemSearch.dataGrid1.ItemsSource = Items.Tables["Items"].DefaultView;
      ItemSearch.dataGrid1.SelectionMode = DataGridSelectionMode.Single;
      ItemSearch.dataGrid1.SelectionUnit = DataGridSelectionUnit.FullRow;
      while (ItemSearch.dataGrid1.SelectedItem != null)
      {
        // Do something until the user selects a row, then return that row
          Thread.Sleep(100); // Doesn't work... Locks whole screen
      }
      }
      return ItemCode; // Selected row

C#数据网格视图等待所选行

使用ItemSearch.ShowDialog。它将阻止后续代码运行,直到表单关闭。

您应该在表单本身中设置datagrid1属性。将数据源传递给window1构造函数(应该重载默认构造函数):

  var ItemSearch = new Window1(Items.Tables["Items"].DefaultView); 
  ItemSearch.ShowDailog();

Window1构造函数:

public Window1(System.Data.DataView datasource)
  {  
      InitializeComponent();
      dataGrid1.ItemsSource = datasource;
      dataGrid1.SelectionMode = DataGridSelectionMode.Single;
      dataGrid1.SelectionUnit = DataGridSelectionUnit.FullRow;
  }