2014-01-15 29 views
0

我正在使用c#中的winforms。我有一个窗体在其面板中加载其他窗体。现在我的孩子表格有很多文本框。如何将控件集中在通过Tab键索引添加到其父窗体的面板上的控件

我想通过将tab索引设置为零来加载我的子表单来设置其中一个文本框的焦点。

但是,当我加载我的孩子表单时并没有发生。我已经采取了制表位属性&照顾我也经历了形式的标签顺序。但问题仍然存在。

当我从启动加载儿童窗体时,它将重点放在零索引控件上。我想我的问题是,我正在加载这些表单在一个父窗体的面板。任何解决这个问题的方法?

+0

不太清楚你在做什么反正你尝试在要接收聚焦控制调用。选择()?默认情况下,聚焦控件是选项卡索引中的第一个启用(和可选)控件,并且更改为必须明确地选择另一个控件。 –

+0

它是这样的: 我有一个MainForm - 它有一个面板 --panel加载TruckForm,它有一个文本框命名为txtTruck。 现在当我的程序启动Mainform时打开。 然后我可以按下一个按钮来加载TruckForm。 现在,当TruckForm加载时,我希望我的txtTruck被集中。 txtTruck的Tab索引为零。但它没有专注。 我不想手动编码来做到这一点。 –

+0

抱歉,您必须手动完成。为什么WinForms应该把重点放在另一种控制上?它没有。你不必明确地把焦点放在txtTruck上,但是**你必须**在TruckForm被加载并插入到它的容器面板中之后执行它。 –

回答

0

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

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

在做这件事之前,请确保您将子窗体添加到相应的面板。

这里是我使用的代码的片段: Form1中childform1 =新Form1中(); //创建子形式 私人无效btn_Click(对象发件人,EventArgs的) {

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 
的一个实例

}

我希望这可以帮助你..

0

Windows窗体在下面的列表控件是不可选。从这些控件派生的控件也是不可选的。 面板 分组框中 的PictureBox 进度 分配器 标签 LinkLabel的(当有存在于控制没有链接)

焦点是主要用于定制控件作者低电平方法。相反,应用程序员应该为子控件使用Select方法或ActiveControl属性,或者为窗体使用Activate方法。

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

相关问题