Текст RichTextBox не отображается C # - PullRequest
4 голосов
/ 26 декабря 2010

с помощью элемента управления 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");
    }`

, но все еще любопытноо том, почему это вызвало такое странное поведение?

1 Ответ

5 голосов
/ 26 декабря 2010

То же самое происходит, когда вы делаете richTextBox1.Text = "hello";?

РЕДАКТИРОВАТЬ: пытается объяснить проблему

Не видя весь код, мне трудно знать наверняка.

Но я предполагаю, что что-то вызвало вызов вашего обработчика события OnLoad из первого вызова InitializeComponent, а затем во втором вызове RichTextBox был заменен новым экземпляром, и ваш текст был добавлен к старому экземпляру.

Если вы разместите минимальный код, который все еще работает (включая содержимое InitializeComponent), я могу попытаться выяснить причину.

РЕДАКТИРОВАТЬ 2

Ну, когда вы дважды вызываете InitializeComponent, вы фактически создаете два экземпляра всех элементов управления на вашем Form. Так что случилось, первый звонок создал один RichTextBox. Затем второй вызов создал еще один RichTextBox в том же месте, с тем же размером. Затем вы установите второй текст RichTextBox.

Причина, по которой вы не видите текст, заключается в том, что первый RichTextBox скрывает второй! Чтобы проверить это, вы можете добавить некоторый код для изменения местоположения richTextBox1 после того, как вы установите его текст, и тогда вы увидите, что их два ...

...