Label.TextAlign
タイプはContentAlignmentです。開発者は、垂直方向と水平方向の配置の任意の組み合わせを選択できます。
TextBox.TextAlign
タイプはHorizontalAlignmentです。Left、Center、およびRightのみを許可します。
ContentAlignment = MiddleLeft
TextBoxの動作を模倣したいと思います。
MsgBox
基本的に、カスタムダイアログを作成しようとしています(MessageBox.Show
非 VB 開発者向け)。Microsoftでは、Windows API を介しMsgBox
て自動的に設定されているようです。ユーザーがテキストを選択して、部分的または完全にクリップボードにコピーできる必要があるためLabel.TextAlign = MiddleLeft
、 (ラベルではなく) である必要があります。TextBox
これまでのところ、私はこの解決策を思いつきました:
- TableLayoutPanel があり、そのセルの 1 つに上記の 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
。