覆盖.Net Winform Textbox中的'KeyDown'事件

时间:2010-08-02 06:27:19

标签: c# winforms

我创建了一个'CustomTextBox'类来通过.Net Winform开发中的'Enter'和'Up'键来控制焦点。

我正在使用以下代码来执行此操作。

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 个答案:

答案 0 :(得分:2)

Parent属性为您提供了Textbox直接容纳的容器。

请注意,Parent与表单不同。父级是直接包含Control的控件。可以是Panel,GroupBox,其他UserControl,Form等......

答案 1 :(得分:1)

我假设您正在使用taborder查找下一个控件,taborder特定于持有控件的容器,如果控件是其容器中的最后一个,则需要在控件树中再执行一个父控件获得下一个控制。

正如GvS所提到的,使用parent属性来让容器开始搜索。