日期:2014-05-18  浏览次数:20986 次

怎么让RichTextBox自动调整大小
问题描述:我要做一个显示框。需要显示的内容是rtf格式的。
没有成功的解决经过:我开始试过Label。如果是纯文本,它的显示效果很好,完全符合我的要求。但可惜的是它不支持rtf格式。
RichTextBox支持rtf,但是没有AutoSize属性可以设置。我需要它根据内容的多少自动调整大小。我知道也用了“ContentsResized”。但是它的宽高是随机的。我需要的是如果我输入的文本没有回行,它显示的内容也不回行,而是增加宽来适应内容。而当内容减少时,它的宽高也随之减小。(如果是普通文本,Label完全符合这个要求。)
使用Label或者RichTextBox,或者是其他的控件都可以。只要符合我的要求。
请各位师兄指教!

------解决方案--------------------
兄弟,你用下TextChangeg事件來自已測量你字串的寬度.再根据所得寬度改變richTextBox寬度

int fontWidth=(int)Graphics.FromHwnd(RichTextBox).MeasureString(RichTextBox.Text,this.Font).Width;
這里就能獲得字串的寬度.其它自已去設置
------解决方案--------------------
void richTextBox1_TextChanged(object sender, EventArgs e) 


int EM_GETLINECOUNT = 0x00BA;//获取总行数的消息号 
int lc = SendMessage(this.richTextBox1.Handle, EM_GETLINECOUNT, IntPtr.Zero, ""); 
int sf = this.richTextBox1.Font.Height * (lc + 1) + this.richTextBox1.Location.Y + 5; 
if (sf > defaultHeight) 

this.richTextBox1.ClientSize = new Size(this.Width, sf); 

else 

this.richTextBox1.ClientSize = new Size(this.Width, defaultHeight); 


}