147

WinForms私は成功、失敗などのさまざまなメッセージを表示するためにを使用してLabelいます。

そのラベルを中央のフォームの中央に配置したいと思います。ラベルに単語が1つしかない場合でも、文全体が含まれている場合でも、中央に配置されるソリューションが必要です。

4

7 に答える 7

312

LabelAutoSizeプロパティをにFalseTextAlignプロパティをにMiddleCenterDockプロパティをに設定しFillます。

于 2010-12-03T08:37:04.943 に答える
14

プロパティAnchor:Noneを設定して達成します。

于 2014-06-03T09:48:07.807 に答える
14

プログラムで設定するためのいくつかのマイナーな追加コンテンツ:

Label textLabel = new Label() { 
        AutoSize = false, 
        TextAlign = ContentAlignment.MiddleCenter, 
        Dock = DockStyle.None, 
        Left = 10, 
        Width = myDialog.Width - 10
};            

ドックスタイルとコンテンツの配置は、ニーズとは異なる場合があります。たとえば、wpfフォームの単純なラベルには、DockStyle.Noneを使用します。

于 2014-07-22T23:13:26.690 に答える
11

使用可能な領域全体にラベルをドッキングしたくない場合は、TextChangedの代わりにSizeChangedイベントを設定するだけです。各文字を変更すると、autosizeプロパティがTrueに設定されている場合に、ラベルのwidthプロパティとそのテキストが変更されます。したがって、ちなみに、任意の数式を使用して、ラベルをフォームの中央に配置することができます。

private void lblReport_SizeChanged(object sender, EventArgs e)
{
    lblReport.Left = (this.ClientSize.Width - lblReport.Size.Width) / 2;
}
于 2015-05-12T14:19:50.280 に答える
5

受け入れられた答えは、2つの理由で私にはうまくいきませんでした:

  1. 私はBackColorそのように設定AutoSize = falseDock = Fill、背景色をフォーム全体に塗りつぶしました
  2. AutoSizeラベルテキストが動的だったので、とにかくfalseに設定できませんでした

代わりに、フォームの幅とラベルの幅を使用して、左オフセットを計算しました。

MyLabel.Left = (this.Width - MyLabel.Width) / 2;
于 2019-08-20T15:11:33.733 に答える
1

同様のことをしたかったのですが、背景画像のあるフォームで、ラベルのテキストが変更されたときに、このメソッドで再描画が明白であることがわかったので、次のようにしました。*ラベルのAutoSizeをtrueに設定し、TextAlignをに設定します。 MiddleCenter

次に、テキストが変更されるたびに(私のタイマーを使用して実行されました)、次のメソッドを呼び出しました。

    private Point GetPosition()
    {
        int y = (this.Height / 2) - (label1.Height / 2);
        int x = (this.Width / 2) - (label1.Width / 2);
        return new Point(x, y);
    }

そして、ラベルのLocationプロパティをこの戻り値に設定します。これにより、テキストが変更されたときにラベルが常にフォームの中央に配置され、フルスクリーンフォームの再描画が明確になりませんでした。

于 2019-01-30T18:44:54.887 に答える
1

次のコードスニペットを試すことができます。

private Point CenterOfMenuPanel<T>(T control, int height=0) where T:Control {
    Point center = new Point( 
        MenuPanel.Size.Width / 2 - control.Width * 2,
        height != 0 ? height : MenuPanel.Size.Height / 2 - control.Height / 2);

    return center;
}

本当にセンターです

ここに画像の説明を入力してください

于 2019-09-12T13:48:54.640 に答える