本人在程序中用textBox1用于输出结果,设置textBox1的Multiline为true,不使用滚动条,textBox2为输入的行数,先定义一个整形变量Hnum,并在程序启动时初始化其值为0;在“确定”的按钮单击事件中执行如下代码:
Hnum = int.Parse(textBox2.Text); textBox1.Size = new Size(textBox1.Width, 15 * Hnum); //15是行高 panel1.Size = new Size(textBox1.Width, textBox1.Height); for (int i = 1; i <= Hnum; i++) { textBox1.Text += i.ToString() + "." + "中国风云人物" + Environment.NewLine; if (i == Hnum) { break; } } textBox1.SelectionStart = textBox1.TextLength; textBox1.Focus();
(注,上面行高15的由来: textBox1的字体是宋体,大小是9pt,文本框的高度是30时,本人看到能输入两行文字,所以本人认为该字体为这个大小时,字体的高度是15)
程序的运行结果如下链接(当输入20行文字时):
https://img.alicdn.com/imgextra/i2/65248722/TB2tt7BqVXXXXakXXXXXXXXXXXX_!!65248722.jpg
(发现在这个论坛里发帖时图片很难上传)可以看到文本的最下面有好多空白,怎么去掉多余的空白?也就是多行文本的最下面应该是文本框的下边缘。
解决方案
20
用textBox1.Font.Height去判断行高
10
记得很久以前,本人用的是一个被隐藏了的具有AutoSize 和 BorderStyle.Fixed3D 属性的 Label,哈哈哈!
10
然后 TextBox.TextChanged 中 Label.Text = TextBox.Text
Label.SizedChanged 中 TextBox.Size = Label.Size
Label.SizedChanged 中 TextBox.Size = Label.Size