2016-10-21 3 views
0

Я ищу функцию, которая дает мне возможность начать поиск через мой DGV без нажатия на кнопку «Поиск». Therefor Я сделал кнопку поиска, которая начинается процесс поиска по щелчку: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; 
       } 
      } 
     } 

Теперь я попытался открыть новый класс для активации кнопки Поиска без необходимости нажимать на нем:

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

Но это не сработает. Я уже пробовал несколько изменений, которые тоже не сработали. Отсутствует ошибка или исключение, просто ничего не происходит, если я использую кнопку «ENTER».

+0

Включена ли кнопка, когда вы нажимаете клавишу? Если нет, то он не будет захватывать клавиатуру. Кроме того, это необязательно, так как событие нажатия клавиши произойдет только тогда, когда фокус установлен на кнопку, при нажатии клавиши ввода он поднимет событие клика. – 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 -Продукт вашей формы на true. Тогда можно реализовать KeyDown -Event для всех элементов управления на форме, как это:

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

В Design-View вашей формы есть свойство в Property-Window под названием KeyPreview. – Wudge

+0

Не нашел. Искал через него и открывал каждую подблочку, которую он мог скрывать ниже. – MarvinR

0

есть свойство для формы, называемой AcceptButton. Это вызывается при нажатии кнопки ввода. Возможно, вы можете установить это на свою кнопку поиска.

public Form1() 
     { 
      InitializeComponent(); 
      this.AcceptButton = button1;// button1 name of your button 
     } 
Смежные вопросы