2016-10-21 4 views
0

'검색'버튼을 클릭하지 않고 DGV를 통해 검색을 시작할 수있는 기능을 찾고 있습니다.C#, WinForms - 'ENTER'버튼으로 검색 프로세스 시작

private int SearchValueRowIndex() 
     { 
      string searchValue = textBox1.Text; 

      foreach (DataGridViewRow row in dataGridView1.Rows) 
      { 
       foreach (DataGridViewCell cell in row.Cells) 
       { 
        if (cell.Value != null && cell.Value.ToString() == searchValue) 
        { 
         return cell.RowIndex; 
        } 
       } 
      } 
      // Not found 
      return -1; 
     } 

SearchValueRowIndex :

private int SearchValueRowIndex() 
    { 
     string searchValue = textBox1.Text; 

     foreach (DataGridViewRow row in dataGridView1.Rows) 
     { 
      foreach (DataGridViewCell cell in row.Cells) 
      { 
       if (cell.Value != null && cell.Value.ToString() == searchValue) 
       { 
        return cell.RowIndex; 
       } 
      } 
     } 

이 지금은 필요없이 SearchButton의 활성화를위한 새로운 클래스를 열려고은 클릭 그 때문에 나는 클릭에 검색 프로세스를 시작하는 검색 버튼을 만든 그것에 :

private void button1_KeyPress(object sender, KeyEventArgs e) 
    { 
     if (e.KeyValue.ToString() == Keys.Enter.ToString()) 
     { 
      button1.PerformClick(); 
     } 
    } 

하지만 작동하지 않습니다. 이미 몇 가지 변경 사항을 시도했지만 제대로 작동하지 않았습니다. 오류나 예외가 나타나지 않습니다. 'ENTER'버튼을 사용하면 아무 일도 일어나지 않습니다.

+0

키를 누를 때 버튼에 포커스가 있습니까? 아니오이면 키보드를 캡처하지 않습니다. 또한 키 입력 이벤트는 버튼에 포커스가 설정되었을 때만 발생하므로 Enter 키를 누르면 클릭 이벤트가 발생합니다. – Gusman

+0

키에 포커스를 추가하는 방법은 무엇입니까? – MarvinR

+0

버튼이 정말로 필요한가요? 내 말은, 양식에 KeyPreview 속성을 true로 설정 한 다음 키를 누를 수 있다는 것입니다. – Gusman

답변

0

것 같다. 그런 다음 textbox.KeyDown 이벤트를 직접 연결하여 필요한 결과를 얻을 수 있습니다.

private void SearchTextBox_KeyDown(object sender, KeyEventArgs e) 
    { 
     if (e.KeyCode == Keys.Enter) 
     { 
      //Perform search 
     } 
    } 
0

양식의 KeyPreview -Property를 true으로 설정해야합니다. 그런 다음이 같은 양식의 모든 컨트롤에 대한 KeyDown - 이벤트를 구현할 수 있습니다 : 당신이 검색 텍스트 상자에 검색 쿼리를 입력하는 것처럼

private void button1_KeyDown(object sender, KeyEventArgs e) 
{ 
    if (e.KeyCode == Keys.Enter) this.button1_Click(sender, e); 
} 

private void txt_search_KeyDown(object sender, KeyEventArgs e) 
{ 
    if (e.KeyCode == Keys.Enter) this.button1_Click(sender, e); 
} 
... 
+0

STRG + F로 검색했으나 찾지 못했습니다. 어디에 추가할까요? – MarvinR

+0

양식의 디자인보기에는 속성 창에 KeyPreview라는 속성이 있습니다. – Wudge

+0

찾지 못했습니다. 그것을 탐색하고 아래에 숨길 수있는 모든 하위 버튼을 열었습니다. – MarvinR

0

AcceptButton이라는 양식의 속성이 있습니다. Enter를 누를 때 호출됩니다. 어쩌면 이것을 검색 버튼으로 설정할 수 있습니다.

public Form1() 
     { 
      InitializeComponent(); 
      this.AcceptButton = button1;// button1 name of your button 
     }