2014-08-27 75 views
0

我想讀取用戶正在編輯的當前單元格的文本。我想根據用戶在數據網格控件中的單元格上輸入的內容來過濾列表框。我想在實現它在DataGrid的KeyDown事件上,但我找不到一種方法來讀取單元格的值。我想要讀取用戶輸入的值,而不是用戶按下Enter後的最終編輯值。有任何想法嗎?從Datagrid中的當前編輯單元格獲取文本

+0

「我想務必閱讀值作爲用戶輸入,而不是最終的修正值後,用戶按Enter鍵。 「你爲什麼想這麼做?如果你經常使用.endEdit(),然後在輸入時嘗試閱讀,那麼你只會得到這樣的結果,但是看起來你寧願在那個時候有一個文本框。 – Kat 2014-08-27 19:52:35

+0

你應該允許他們輸入他們想要的東西,如果你有一些特定的定義良好的業務過濾器規則可以被認爲是一個有效的編輯,那麼在允許行更新之前做一些驗證檢查 – MethodMan 2014-08-27 20:00:33

回答

1

這可能會幫助你。取一個look

void dgvDemo_EditingControlShowing(object sender, 
DataGridViewEditingControlShowingEventArgs e) 
{ 
TextBox txt = e.Control as TextBox; 
if (txt != null) 
{ 
    txt.KeyPress += new 
    KeyPressEventHandler(txt_KeyPress); 
} 
} 

void txt_KeyPress(object sender, KeyPressEventArgs e) 
{ 
MessageBox.Show(e.KeyChar.ToString()); 
} 

這個樣本我在WPF中完成。

<DataGrid Grid.Row="1" ItemsSource="{Binding List}" AutoGenerateColumns="False"> 
     <DataGrid.Columns> 
      <DataGridTemplateColumn> 
       <DataGridTemplateColumn.CellTemplate> 
        <DataTemplate> 
         <TextBlock Text="{Binding MyName}"></TextBlock> 
        </DataTemplate> 
       </DataGridTemplateColumn.CellTemplate> 
       <DataGridTemplateColumn.CellEditingTemplate> 
        <DataTemplate> 
         <TextBox Text="{Binding MyName}" KeyUp="TextBox_KeyUp"></TextBox> 
        </DataTemplate> 
       </DataGridTemplateColumn.CellEditingTemplate> 
      </DataGridTemplateColumn> 
     </DataGrid.Columns> 
    </DataGrid> 

代碼隱藏

private void TextBox_KeyUp(object sender, KeyEventArgs e) 
    { 

    } 

請您檢查,這可能幫助你

+0

就是它,但這是WinForms,我正在使用WPF。 – RBasniak 2014-08-28 19:47:02

+0

@RBasniak跟隨着mvvm模式 – Eldho 2014-08-29 04:48:50

+0

謝謝@Eldho,就是這樣! – RBasniak 2014-08-29 10:44:57

相關問題