中央にラベルが付いたフォームを表示する必要があります(フォームの幅とラベルのテキスト、幅、フォントファミリー、フォントサイズに応じて)。これはこれまでの私の試みです:
(Me.Width - TextRenderer.MeasureText("Hello Word", New Font("Delius", 10,
FontStyle.Regular).Width) / 2
どれだけ試しても、ラベルが中央に表示されません(ラベルの左側と右側が同じサイズに表示されません)。
どのフォントを使用しても、テキストを測定する別の方法はありますか?ありがとうございました。
ラベルのAutosize
プロパティをFalseに設定してから、ラベルの上部、下部、または塗りつぶしをDock
するか、フォームの幅全体にドラッグしてAnchor
をに設定します。左と右の両方。次に、TextAlign
をMiddleCenterに設定します。
Anchor
プロパティは、基本的にコントロールの境界線をフォームのそれぞれの側に固定するため、かなり気の利いたものです。
したがって、この場合、コントロールの左側はフォームの左側に固定され、右側はフォームの右側に固定されます。
したがって、フォームのサイズが変更されると、コントロールの左側と右側が一緒にドラッグされます。 TextAlign
とともに、これは常にテキストを中央に保ちます。
これを機能させるには、ラベルのAutoSize
機能を無効にする必要があります。
別の方法は、AutoSize
を有効にして、フォームをコントロールの中央に配置してから、disable左右両方のAnchor
にすることです。これにより、ラベルがどちらの側にもくっつかなくなり、相対位置が維持されるため、ラベルも中央に保持されます。
だから:コントロールにあなたのために仕事をさせてください。
より専門的なソリューションは次のとおりです。
水平方向のセンタリング:
_ myLabel.Left = (myLabel.Parent.Width \2) - (myLabel.Width \2)
_
垂直方向のセンタリング:
_myLabel.Top = (myLabel.Parent.Height \ 2) - (myLabel.Height \ 2)
_
このコードを_myLabel.[SizeChanged][1]
_イベントハンドラーとその親SizeChanged
イベントハンドラーに追加します
p.s. InitializeComponent()
メソッドが呼び出される前、またはコントロールが親コントロールにアタッチされる前に、コードラインを追加しないでください。