我创建了一个'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()'方法可能有它本身就很难获得它。
所以我的问题是,我可以使用不同的方法或代码来访问当前文本框的容器表单吗?
或者你有什么想法通过其他方式做同样的事情吗?
提前致谢。
(有没有人知道这个?寻找解决方案。)
答案 0 :(得分:2)
Parent属性为您提供了Textbox直接容纳的容器。
请注意,Parent与表单不同。父级是直接包含Control的控件。可以是Panel,GroupBox,其他UserControl,Form等......
答案 1 :(得分:1)
我假设您正在使用taborder查找下一个控件,taborder特定于持有控件的容器,如果控件是其容器中的最后一个,则需要在控件树中再执行一个父控件获得下一个控制。
正如GvS所提到的,使用parent属性来让容器开始搜索。