以编程方式使用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");
}`
但仍然好奇为什么会导致这种奇怪的行为?
答案 0 :(得分:5)
执行richTextBox1.Text = "hello";
时会发生同样的情况吗?
编辑:尝试解释问题
如果没有看到整个代码,我很难确定。
但我的猜测是,有些内容导致您的OnLoad
事件处理程序在第一次调用InitializeComponent
时被调用,然后在第二次调用中RichTextBox
被替换为InitializeComponent
新实例,您的文本已添加到旧实例。
如果您发布仍有行为的最小代码(包括InitializeComponent
的内容),我可以尝试帮助找出原因。
编辑2
好吧,当您拨打Form
两次时,实际上会在RichTextBox
上创建所有控件的两个实例。所以发生的事情是,第一次调用创建了一个RichTextBox
。然后第二个调用在完全相同的位置创建了另一个RichTextBox
,大小相同。然后将文本设置为第二个RichTextBox
。
您无法看到该文字的原因是因为第一个richTextBox1
隐藏第二个!要对此进行测试,您可以添加一些代码以在设置文本后更改{{1}}的位置,然后您会看到其中有两个...