0

我有一个带有函数的 ac# 表单,它在 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
4

1 回答 1

0

使用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;
  }
于 2013-02-10T14:51:55.403 回答