2014-08-27 74 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

相关问题