如何通过Tab键索引将控件聚焦在其父窗体的面板上添加的窗体中

时间:2014-01-15 08:19:04

标签: c# .net winforms forms

我正在研究c#中的winforms。我有一个表格,在其面板中加载其他表格。现在我的孩子表单有很多文本框。

我想通过将标签索引设置为零来加载我的子窗体,从而将焦点设置在其中一个文本框上。

但是当我加载我的孩子表格时,它并没有发生。我已经处理了制表符属性&我也经历了表格的标签顺序。但问题仍然存在。

当我从启动时加载子窗体时,它会聚焦零索引控件。我想我的问题是我在父表单的面板中加载这些表单。解决这个问题的方法是什么?

2 个答案:

答案 0 :(得分:1)

以下列表中的Windows窗体控件不可选。从这些控件派生的控件也是不可选择的。 面板 分组框中 图片框 进度条 分离器 标签 LinkLabel(当控件中没有链接时)

Focus是一种低级方法,主要用于自定义控件作者。相反,应用程序员应该对子控件使用Select方法或ActiveControl属性,或者对表单使用Activate方法。

https://msdn.microsoft.com/en-us/library/system.windows.forms.control.focus.aspx

答案 1 :(得分:0)

您可以通过在父窗体中创建子窗体的实例,然后将焦点设置为子窗体控件,将焦点设置为在其父窗体的面板上添加的窗体中的控件。 制作子表单的实例: ChildForm formInstanceName = new ChildForm();

然后您可以将特定控件的焦点属性设置为: formInstanceName .controlname.Focus();

在执行此操作之前,请确保将子表单添加到相应的面板中。

以下是我使用的代码片段: Form1 childform1 = new Form1(); //创建子窗体的实例 private void btn_Click(object sender,EventArgs e) {

Panel2.Controls.Clear();//To clear existing controls on panel
  Panel2.Controls.Add(childform1); // To add child form controls on the panel.
  childform1 .textbox1.Focus(); //To set focus to control of child form

}

我希望这可以帮助你......