没有显示RichTextBox文本C#

时间:2010-12-25 23:24:29

标签: c# richtextbox

以编程方式使用richtextbox控件我将文本附加到richtextbox。

richTextBox1.AppendText("hello");

某种程度上,文字出现在richTextBox1.Text中,但未在表格中显示。 什么可能是什么问题? (我检查了forecolor似乎没问题)。 提前致谢

修改 的 找到了根本原因(错误地将initializeComponent()两次。)

private void InitializeComponent()
{
    this.richTextBox1 = new System.Windows.Forms.RichTextBox();
    this.SuspendLayout();
    // 
    // richTextBox1
    // 
    this.richTextBox1.Location = new System.Drawing.Point(114, 104);
    this.richTextBox1.Name = "richTextBox1";
    this.richTextBox1.Size = new System.Drawing.Size(100, 96);
    this.richTextBox1.TabIndex = 0;
    this.richTextBox1.Text = "";
    // 
    // Form1
    // 
    this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
    this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
    this.ClientSize = new System.Drawing.Size(284, 262);
    this.Controls.Add(this.richTextBox1);
    this.Name = "Form1";
    this.Text = "Form1";
    this.Load += new System.EventHandler(this.Form1_Load);
    this.ResumeLayout(false);

}

   public Form1()
    {
            InitializeComponent();
            InitializeComponent();

    }

    private void Form1_Load(object sender, EventArgs e)
    {
        richTextBox1.AppendText("hello world");
    }`

但仍然好奇为什么会导致这种奇怪的行为?

1 个答案:

答案 0 :(得分:5)

执行richTextBox1.Text = "hello";时会发生同样的情况吗?

编辑:尝试解释问题

如果没有看到整个代码,我很难确定。

但我的猜测是,有些内容导致您的OnLoad事件处理程序在第一次调用InitializeComponent时被调用,然后在第二次调用中RichTextBox被替换为InitializeComponent新实例,您的文本已添加到旧实例。

如果您发布仍有行为的最小代码(包括InitializeComponent的内容),我可以尝试帮助找出原因。

编辑2

好吧,当您拨打Form两次时,实际上会在RichTextBox上创建所有控件的两个实例。所以发生的事情是,第一次调用创建了一个RichTextBox。然后第二个调用在完全相同的位置创建了另一个RichTextBox,大小相同。然后将文本设置为第二个RichTextBox

您无法看到该文字的原因是因为第一个richTextBox1 隐藏第二个!要对此进行测试,您可以添加一些代码以在设置文本后更改{{1}}的位置,然后您会看到其中有两个...