2014-08-27 5 views
0

사용자가 편집중인 현재 셀의 텍스트를 읽고 싶습니다. 사용자가 DataGrid 컨트롤에서 셀에 입력하는 내용에 따라 목록 상자를 필터링하고 싶습니다. 내가 DataGrid의 KeyDown 이벤트에 그것을 구현 생각,하지만 셀의 값을 읽을 수있는 방법을 찾을 수 없습니다. 사용자가 Enter 키를 누른 후 최종 편집 값이 아닌 사용자 유형으로 값을 읽는 것이 좋습니다. 어떤 아이디어?Datagrid의 현재 편집 셀에서 텍스트 가져 오기

+0

"나는 사용자가 사용자 Enter 키를 누릅니다 후가 아니라 최종 편집 값을 입력으로 값을 읽습니까 싶습니다 도움이 될 수 있습니다. " 왜 그걸하고 싶니? .endEdit()를 계속 입력하고 입력 할 때 읽으려고 시도하지만 그 시점에서 텍스트 상자가있는 것처럼 보입니다. – Kat

+0

당신은 그들이 원하는 것을 입력 할 수있게해야하고, 유효한 편집으로 간주 될 수있는 것과 관련하여 특정한 명확한 비즈니스 필터 규칙이있는 경우 행을 업데이트하도록 허용하기 전에 유효성 검사를 수행하십시오. – MethodMan

답변

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) 
    { 

    } 

pls는 확인 Codebehind가, 이것은 당신이

+0

정확히 그것이 될 것이지만 이것은 WinForms를위한 것입니다. 저는 WPF를 사용하고 있습니다. – RBasniak

+0

@RBasniak은 mvvm 패턴을 따르고 있습니다. – Eldho

+0

감사합니다. @ Eldho, 그게 전부입니다! – RBasniak

관련 문제