TextBox未以WinForms形式显示

时间:2013-08-07 00:26:14

标签: c# .net winforms visual-studio

我在运行时向我的表单添加了一个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不会显示?什么都没有。我在整个地方都设置了断点,但没有一个断点可以帮助我。所有似乎正常,但不是。

3 个答案:

答案 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。也许你的问题很相似。