.net Winforms控件占位符
我正在尝试将System.Windows.Forms.Control添加到给定的窗体控件集合。为此,我创建了一个control类型的私有字段,然后在构造函数中将该字段实例化为System.Windows.Forms.control的新实例 在运行时,我尝试将_占位符变量的类型更改为文本框,方法如下代码示例所示。因此,基本上,我尝试使用一个类型为Control的占位符,并在运行时将其更改为另一个控件,如文本框或标签。我的问题是我的表格上没有显示任何内容?如有任何见解,将不胜感激.net Winforms控件占位符,.net,winforms,controls,.net,Winforms,Controls,我正在尝试将System.Windows.Forms.Control添加到给定的窗体控件集合。为此,我创建了一个control类型的私有字段,然后在构造函数中将该字段实例化为System.Windows.Forms.control的新实例 在运行时,我尝试将_占位符变量的类型更改为文本框,方法如下代码示例所示。因此,基本上,我尝试使用一个类型为Control的占位符,并在运行时将其更改为另一个控件,如文本框或标签。我的问题是我的表格上没有显示任何内容?如有任何见解,将不胜感激 public cl
public class MyForm : Form
{
System.Windows.Forms.Control _placeholder = null;
public MyForm()
{
_placeholder = new System.Windows.Forms.Control();
this.Controls.Add(_placeholder);
ChangeToTextBox();
}
public void ChangeToTextBox()
{
_placeholder = new TextBox();
}
}
这将不起作用,因为原始占位符仍然是添加到控件的引用。您可以通过执行以下操作来修复它:
public void ChangeToTextBox()
{
this.Controls.Remove(_placeholder); // Remove old
_placeholder = new TextBox();
this.Controls.Add(_placeholder); // Add new
}
这是说,如果这将进入你的表单中的同一个位置,你可能想考虑把它放在那里,而只是将文本框添加到面板中。这将防止删除现有控件的需要,因为它只是在中添加一个控件。
它不起作用,因为添加到控件集合的是您在构造函数中添加的System.Windows.Forms.Control
的实例。然后,您可以更改占位符指向文本框控件的对象,但您永远不会将该文本框添加到表单的控件
集合中。是的,这很有意义,是的,我正在尝试将它添加到同一位置。感谢您的宝贵意见!感谢您的宝贵意见!