RichTextBox文本未显示 C#

4

我正在程序化地使用RichTextBox控件,将文本附加到RichTextBox中。

richTextBox1.AppendText("hello");

一些文本似乎出现在richTextBox1.Text中,但未显示在表单中。 有什么想法可能是问题吗? (我检查了前景色似乎没问题)。 提前致谢。
编辑: 找到了根本原因(意外地两次调用了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");
    }`

但还是好奇为什么会导致这种奇怪的行为呢?


这段代码应该是可以工作的。为了确保,我刚刚在一个空项目上测试了它...你能提供更多关于你的项目的细节吗?你能将问题缩小到最小的代码范围内并发布代码吗?这可能会帮助别人来帮助你。 - Ran
谢谢帮我找出了根本原因。你知道为什么会发生这种情况吗? - user271077
1个回答

5
当您执行richTextBox1.Text = "hello";时,是否发生同样的情况?
编辑:试图解释问题
没有看到整个代码,很难确定。
但我的猜测是,某些原因导致您的OnLoad事件处理程序在第一次调用InitializeComponent中被调用,然后在第二次调用中,RichTextBox被替换为新实例,并且您的文本添加到旧实例中。
如果您发布仍具有行为的最小代码(包括InitializeComponent的内容),我可以尝试帮助找出原因。
编辑2:
当您两次调用InitializeComponent时,实际上会创建您Form上所有控件的两个实例。因此,第一次调用创建了一个RichTextBox。然后,第二次调用在完全相同的位置和大小创建了另一个RichTextBox。然后,您将文本设置为第二个RichTextBox
之所以看不到文本,是因为第一个RichTextBox“隐藏”了第二个!要测试它,您可以添加一些代码,在设置其文本后更改richTextBox1的位置,然后您将看到有两个……

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接