我正在研究c#中的winforms。我有一个表格,在其面板中加载其他表格。现在我的孩子表单有很多文本框。
我想通过将标签索引设置为零来加载我的子窗体,从而将焦点设置在其中一个文本框上。
但是当我加载我的孩子表格时,它并没有发生。我已经处理了制表符属性&我也经历了表格的标签顺序。但问题仍然存在。
当我从启动时加载子窗体时,它会聚焦零索引控件。我想我的问题是我在父表单的面板中加载这些表单。解决这个问题的方法是什么?
答案 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
}
我希望这可以帮助你......