2013-02-10 2 views
0

SQL 데이터베이스에서 항목을 검색하고 다른 창에서 가능한 결과 목록을 팝하는 기능을 가진 C# 양식이 있습니다. 사용자가 행을 선택하고 그 결과를 반환 할 때까지 기다리고 싶습니다. 모든 것이 예상대로 작동하지만 아이템이 선택 될 때까지 루프에서 기다리는 효율적인 방법을 찾을 수 없습니다. 어떤 아이디어?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

당신이/시도 사건에 대해 생각 했 번째 윈도 생성자에 데이터 소스를 패스 (디폴트 생성자를 오버로드한다)? –

답변

0

사용 ItemSearch.ShowDialog :

기능 창을 표시합니다. 폼이 닫힐 때까지 실행되는 후속 코드를 차단합니다.

그리고 폼 자체에 datagrid1 속성을 설정해야합니다.

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

번째 윈도 생성자 :

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

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

아 ... 간단한 해결책이 있다는 것을 알고있었습니다! 감사!!! – ConFuser2058945

+0

@ ConFuser2058945 잘 작동했기 때문에 기쁩니다. 비교적 최근에 보셨으니 [답변 수락 방법은 무엇입니까?] (http://meta.stackexchange.com/a/5235/208592)를 읽어보십시오. – AbZy