Label.TextAlign
是ContentAlignment类型。它允许开发人员选择垂直和水平对齐的任意组合。
TextBox.TextAlign
是HorizontalAlignment类型的。它只允许Left、Center和Right。
我想模仿ContentAlignment = MiddleLeft
TextBox 的行为。
基本上,我正在尝试创建一个自定义MsgBox
对话框(MessageBox.Show
对于非 VB 开发人员)。微软MsgBox
似乎Label.TextAlign = MiddleLeft
通过 windows API 自动设置。我需要它是一个TextBox
(不是标签),因为用户应该能够选择文本并部分或全部复制到剪贴板。
到目前为止,我想出了这个解决方案:
- 有一个 TableLayoutPanel,它的一个单元格将包含上面的 TextBox。
- 设置
Anchor = Left,Right
。这将使其保持水平拉伸。 MeasureText
就在显示之前(例如:Form_Load),然后调整TextBox.Height
.Dim size As SizeF = TextBox1.CreateGraphics.MeasureString( TextBox1.Text, TextBox1.Font, TextBox1.Width) TextBox1.Height = size.Height
这是它如何工作的图片(演示项目,还不是自定义 MsgBox):
这似乎是一种相当肮脏的方法,对调整大小和文本更改没有弹性。当然,可以相应地处理这些事件,但这会增加整体混乱。
问题:有更清洁的方法吗?我正在寻找任何可能有助于实现上述行为的东西 - 它不一定必须是TextBox
.