我在运行时向我的表单添加了一个TextBox,这是一个全新的项目,所以这是我到目前为止唯一的代码,所以我100%肯定这不是我自己做的:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
TextBox box = new TextBox();
box.Location = new Point(2, 2);
this.Controls.Add(box);
}
}
}
为什么TextBox不会显示?什么都没有。我在整个地方都设置了断点,但没有一个断点可以帮助我。所有似乎正常,但不是。
答案 0 :(得分:2)
代码非常简单,我能想到的唯一原因是你之前添加了一些其他控件(宽度足以覆盖添加的TextBox
),试试这个:
private void button1_Click(object sender, EventArgs e)
{
TextBox box = new TextBox();
box.Location = new Point(2, 2);
this.Controls.Add(box);
box.BringToFront();
}
同时检查事件处理程序ControlAdded
,我猜表单有一些代码用于此事件处理程序,如果它的类型为TextBox
,则丢弃添加的控件,如下所示:
private void form_ControlAdded(object sender, ControlEventArgs e) {
if(e.Control is TextBox) Controls.Remove(e.Control);
}
答案 1 :(得分:1)
将文本框添加到表单的代码位于button1_Click事件处理程序中。如果将它移动到构造函数,它将正常工作。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
TextBox box = new TextBox();
box.Location = new Point(2, 2);
this.Controls.Add(box);
}
}
}
答案 2 :(得分:0)
我有类似的问题。
查看代码,我发现DO显示的文本框的类型为System.Windows.Forms.TextBox,而DID未显示的文本框的类型为VisualJS.Web.TextBox。也许你的问题很相似。