-1

我在运行时向我的表单添加了一个 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);
        }
    }
}

为什么文本框不显示?什么都没有。我在所有地方都设置了断点,但没有一个可以帮助我。一切看似正常,其实不然。

4

3 回答 3

3

代码很简单,我能想到的唯一原因是你之前添加了一些其他控件(足够宽以覆盖添加的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);
}
于 2013-08-07T00:39:53.930 回答
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);
        }
    }
}
于 2013-08-07T00:32:56.590 回答
0

我有一个类似的问题。

查看代码,我发现 DO 显示的文本框属于 System.Windows.Forms.TextBox 类型,而未显示的文本框属于 VisualJS.Web.TextBox 类型。也许你的问题是相似的。

于 2015-12-14T15:04:17.070 回答