2013-02-10 27 views
0

我有一個c#表單,其中有一個函數用於搜索sql數據庫中的項目,然後在另一個窗口中彈出可能結果列表。我想等到用戶選擇一行,然後返回結果。一切都按預期工作,但我不能想出一個有效的方法來等待循環,直到選中項目。有任何想法嗎?C#datagrid視圖等待選定的行

函數來顯示窗口:

 // 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 
+0

你試過/想過事件? – 2013-02-10 15:10:27

回答

0

使用ItemSearch.ShowDialog。它會阻止後續的代碼運行,直到表單關閉。

而你應該在表單本身設置datagrid1屬性。通過數據源到窗口1構造函數(你應該重載默認構造函數):

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

窗口1構造:

public Window1(System.Data.DataView datasource) 
    { 
     InitializeComponent(); 

     dataGrid1.ItemsSource = datasource; 
     dataGrid1.SelectionMode = DataGridSelectionMode.Single; 
     dataGrid1.SelectionUnit = DataGridSelectionUnit.FullRow; 
    } 
+0

啊......我知道有一個簡單的解決方案!謝謝!!! – ConFuser2058945 2013-02-10 14:57:01

+0

@ ConFuser2058945我很高興它的工作。由於您看起來相對較新,請閱讀[如何接受答案?](http://meta.stackexchange.com/a/5235/208592) – AbZy 2013-02-10 15:20:39