大家好!
最近在做一个显示对话框,用的是C#Winform中的RichTextbox控件,现在碰到一个问题,RichTextBox不能根据内容自动调整高度,宽度自己设置。
以前失败的做法:
1 。this.RichTextBox.GetLineFromCharIndex(StrContent.Length)来获得行号,在乘上文本的字体高度就是当前RichTextBox的高度,没有达到想要的结果。
2. rtb.CreateGraphics().MeasureString(StrContent, rtb.Font).Width / width;来获取文本的行数,结果也失败了。private void addRichTextBox(int x, int y,int width,int height,string context,bool isrtf)
{
RichTextBox rtb = new RichTextBox();
rtb.Location = new System.Drawing.Point(x, y);
//rtb.Name = "choose";
rtb.Size = new System.Drawing.Size(width, height);
rtb.BorderStyle = System.Windows.Forms.BorderStyle.None;
if (!isrtf)
{
rtb.Text = context;
}
else
{
rtb.Rtf = context;
}
this.panel1.Controls.Add(rtb);
}
这是动态添加RichTextBox的代码,我想要实现的是能根据传入的Context参数来设计RichTextBox的高度而不要显示垂直滚动条。
大家有没有什么好的方法?还有什么办法能够禁用panel的水平滚动条而只保留垂直滚动条,WinForm也是?
最近在做一个显示对话框,用的是C#Winform中的RichTextbox控件,现在碰到一个问题,RichTextBox不能根据内容自动调整高度,宽度自己设置。
以前失败的做法:
1 。this.RichTextBox.GetLineFromCharIndex(StrContent.Length)来获得行号,在乘上文本的字体高度就是当前RichTextBox的高度,没有达到想要的结果。
2. rtb.CreateGraphics().MeasureString(StrContent, rtb.Font).Width / width;来获取文本的行数,结果也失败了。private void addRichTextBox(int x, int y,int width,int height,string context,bool isrtf)
{
RichTextBox rtb = new RichTextBox();
rtb.Location = new System.Drawing.Point(x, y);
//rtb.Name = "choose";
rtb.Size = new System.Drawing.Size(width, height);
rtb.BorderStyle = System.Windows.Forms.BorderStyle.None;
if (!isrtf)
{
rtb.Text = context;
}
else
{
rtb.Rtf = context;
}
this.panel1.Controls.Add(rtb);
}
这是动态添加RichTextBox的代码,我想要实现的是能根据传入的Context参数来设计RichTextBox的高度而不要显示垂直滚动条。
大家有没有什么好的方法?还有什么办法能够禁用panel的水平滚动条而只保留垂直滚动条,WinForm也是?
想没想过用word
private void button1_Click(object sender, System.EventArgs e)
{//保存为WORD文件
if(this.richTextBox1.Text=="")
return;
if(this.saveFileDialog1.ShowDialog()==DialogResult.Cancel)
return;
string FileName=this.saveFileDialog1.FileName;
if(FileName.Length<1)
return;
FileName+=".doc";
try
{
Word.ApplicationClass MyWord=new Word.ApplicationClass();
Word.Document MyDoc;
Object Nothing=System.Reflection.Missing.Value;
MyDoc=MyWord.Documents.Add(ref Nothing,ref Nothing,ref Nothing,ref Nothing);
MyDoc.Paragraphs.Last.Range.Text=this.richTextBox1.Text;
object MyFileName=FileName;
//将WordDoc文档对象的内容保存为DOC文档
MyDoc.SaveAs(ref MyFileName,ref Nothing,ref Nothing,ref Nothing,ref Nothing,ref Nothing,ref Nothing,ref Nothing,ref Nothing,ref Nothing,ref Nothing,ref Nothing,ref Nothing,ref Nothing,ref Nothing,ref Nothing);
//关闭WordDoc文档对象
MyDoc.Close(ref Nothing, ref Nothing, ref Nothing);
//关闭WordApp组件对象
MyWord.Quit(ref Nothing, ref Nothing, ref Nothing);
MessageBox.Show("WORD文件保存成功","信息提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
catch(Exception Err)
{
MessageBox.Show("WORD文件保存操作失败!"+Err.Message,"信息提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
}
欢迎使用 CSDN 小秘书
CSDN 小秘书下载
***********************************************************[/align]
style="word-wrap:break-word;"
这样的话,richTextbox里面的东西会自动换行的。
然后呢,把是否有滚动条的属性设置为false试下
至于不允许有滚动条的属性我忘记了。你自己找找看。
{
richTextBox1.Height = e.NewRectangle.Height+10; }接分
上面掉了一句代码
private void addRichTextBox(int x, int y,int width,int height,string context,bool isrtf)
{
RichTextBox rtb = new RichTextBox();
rtb .ScrollBars = RichTextBoxScrollBars.None;
rtb .ContentsResized += new ContentsResizedEventHandler(richTextBox_ContentsResized);
rtb.Location = new System.Drawing.Point(x, y);
//rtb.Name = "choose";
rtb.Size = new System.Drawing.Size(width, height);
rtb.BorderStyle = System.Windows.Forms.BorderStyle.None;
if (!isrtf)
{
rtb.Text = context;
}
else
{
rtb.Rtf = context;
}
this.panel1.Controls.Add(rtb);
}
private void richTextBox1_ContentsResized(object sender, ContentsResizedEventArgs e)
{
richTextBox1.Height = e.NewRectangle.Height+10; }