2010-08-02 2 views
1

Я создал класс CustomTextBox, чтобы развернуть фокус клавишами «Ввод» и «Вверх» в разработке .Net Winform.Переопределить событие «KeyDown» в текстовом поле .Net Winform

Я использую приведенный ниже код для этого.

public class CustomTextBox : System.Windows.Forms.TextBox 
    { 
     protected override void OnKeyDown(KeyEventArgs e) 
     { 
      switch (e.KeyCode) 
      { 
       case Keys.Return: 
        this.FindForm().GetNextControl(this, true); 
        break; 
       case Keys.Up: 
        this.FindForm().GetNextControl(this, false); 
        break; 
      } 
     } 
    } 

Здесь я использую «FindForm()» метод, чтобы получить форму контейнера для текущего TextBox, потому что я имею в виду, что «FindForm()» метод может иметь свою собственную инертность, чтобы получить доступ к нему ,

Итак, мой вопрос: могу ли я иметь другой метод или код для доступа к форме контейнера текущего текстового поля?

ИЛИ У вас есть идея сделать то же самое другими способами?

Заранее спасибо.

(Может кто-нибудь, имеющий идею для этого? В поисках решения.)

ответ

2

Свойство Parent дает контейнер, в котором Textbox находится непосредственно.

Помните, что Родитель не совпадает с формой. Родитель - это элемент управления, который содержит элемент управления напрямую. И может быть панель, GroupBox, другой UserControl, Form и т. Д.

1

Я предполагаю, что вы используете taborder для поиска следующего элемента управления, таможня предназначена для контейнера, содержащего элемент управления, если элемент управления является последний в своем контейнере, вам нужно будет сделать еще один родительский элемент над деревом управления, чтобы получить следующий элемент управления.

Как упоминалось в GvS, используйте родительское свойство, чтобы контейнер начал запускать поиск.

Смежные вопросы