标签: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");
}`
但仍然好奇为什么这会导致这种奇怪的行为?
解决方法:
当你做richTextBox1.Text =“你好”时会发生同样的事情吗?
编辑:试图解释这个问题
没有看到整个代码,我很难确切知道.
但我的猜测是,有些东西导致你的OnLoad事件处理程序在第一次调用InitializeComponent时被调用,然后在第二次调用中,RichTextBox被一个新实例替换,你的文本被添加到旧实例中.
如果你发布仍然有行为的最小代码(包括InitializeComponent的内容),我可以尝试帮助找出原因.
编辑2
好吧,当您两次调用InitializeComponent时,实际上是在表单上创建了所有控件的两个实例.所以发生了什么,第一次调用创建了一个RichTextBox.然后第二次调用在完全相同的位置创建了另一个RichTextBox,大小相同.然后将文本设置为第二个RichTextBox.
你看不到文字的原因是因为第一个RichTextBox隐藏了第二个!要测试它,你可以添加一些代码来在设置文本后更改richTextBox1的位置,然后你会看到有两个代码……
标签:c,richtextbox 来源: https://codeday.me/bug/20190621/1256512.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。