我正在使用WinForms,并且尝试将文本从一个textbox1传递到另一个textbox2。关键是,textbox2必须根据textbox1的内容自动调整大小。我设法完成了这件事,但有一个例外。当您在textbox1中创建新行时,它会这样做。但是当你在写空格而不是创建新行时,它不会正确地调整我的textbox2的大小。它调整了它的大小,但由于某种原因并没有完全调整大小。
这就是我一直在尝试做的。
private void PassTextFunction()
{
const int X_Main = 95;
const int Y_Main = 60;
Size size = TextRenderer.MeasureText(TextBox1.Text, TextBox1.Font);
TextBox2.Text.ClientSize = new Size(size.Width + X_Main, size.Height + Y_Main);
int nInterval = 10;
string res = String.Concat(TextBox2.Text.Select((c, i) => i > 0 && (i % nInterval) == 0 ? c.ToString() + Environment.NewLine : c.ToString()));
TextBox2.Text = TextBox1.Text.ToString();
}
所以当我做线条的时候,一切都调整得很好。下面是示例:https://imgur.com/zxd5aCd
但是当我不写下一行,只是简单地输入,其余的文本被隐藏在下面,由于某种原因,textbox2不能完全调整大小。下面是示例:https://imgur.com/ftbiP55
有没有人可以帮我修复代码?
发布于 2019-04-08 04:17:58
看看the overload taking string
, Font
, Size
and TextFormatFlags
吧。
对于Size
类型的参数,使用textbox的ClientSize
(或者使用textbox宽度的新Size
)(可能还要添加您的X_Main
和Y_Main
--我不确定它们的用途),并且至少为TextFormatFlags
包含TextFormatFlags.WordBreak
(如果其他一些对您也有用的话)。
...
Size size = TextRenderer.MeasureText(TextBox1.Text, TextBox2.Font, TextBox2.ClientSize, TextFormatFlags.WordBreak);
...
https://stackoverflow.com/questions/55561338
复制相似问题