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
使用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;
}