147

固定サイズのコントロールをフォームの中央に配置しようとしています。

興味があるので、これを行う非ばかげた方法はありますか? 私が本当に欲しいのは、text-align css プロパティに似たものです。

現在、周囲のフォームの padding プロパティを適切なサイズに設定し、コントロールの Dock プロパティを fill に設定しています。

4

11 に答える 11

268

これは、アンカーを使用して実現できます。より正確には、それらの不使用

コントロールはデフォルトでフォームの左上に固定されています。つまり、フォームのサイズが変更されても、フォームの左上からの距離は一定のままです。コントロール アンカーを左下に変更すると、フォームのサイズが変更されたときに、コントロールはフォームの下辺と左辺から同じ距離を保ちます。

ある方向のアンカーをオフにすると、コントロールが既に中央に配置されている場合、サイズ変更時に中央に配置されたままになります。一般に、固定されていないコントロールは、ダイアログに対する比例位置を維持します。たとえば、コントロールをダイアログ幅の X=75% に配置し、左右のアンカーをオフにすると、コントロールはその中心をダイアログ幅の X=75% に維持します。

注: VS2015 のプロパティ ウィンドウでアンカーをオフにするには、[なし] と入力する必要がある場合があります (デフォルトの [上、左] ではなく)。

于 2009-01-29T12:34:16.020 に答える
121
myControl.Left = (this.ClientSize.Width - myControl.Width) / 2 ;
myControl.Top = (this.ClientSize.Height - myControl.Height) / 2;
于 2009-01-29T12:36:55.750 に答える
49

フォームのサイズを変更できるかどうかは明記されていないため、サイズ変更を気にしない場合は簡単な方法があります(気にする場合は、Mitch Wheatsソリューションを使用してください)。

コントロール->フォーマット(メニューオプション)->ウィンドウの中央->水平または垂直を選択します

于 2009-01-29T13:12:16.787 に答える
9

I found a great way to do this and it will work with multiple controls. Add a TableLayout with 3 columns. Make the center column an absolute size (however much room you need). Set the two outside columns to 100%. Add a Panel to the center column and add any controls you need and place them where you want. That center panel will now remain centered in your form.

于 2010-07-13T18:06:13.500 に答える
2

中央に配置するコントロールを Panel 内に配置し、左右のパディング値をデフォルトよりも大きい値に設定できます。それらが等しく、コントロールがパネルの両側に固定されている限り、コントロールはそのパネルの中央に表示されます。その後、必要に応じて、コンテナー パネルをその親に固定できます。

于 2012-04-18T16:05:40.997 に答える
0

それには目を見張る必要があります(電卓を取り出して計算できると思います)が、フォームに上記のコントロールを挿入してから、アンカーを削除します(アンカー=なし)。

于 2009-01-29T12:37:05.703 に答える
0

フォームまたは親コントロールのサイズが変更された場合でも、コントロールを中央に配置する。

  1. 親要素の次のプロパティを設定します(プロパティ ウィンドウから設定できます)。
    parentControl.AutoSize = true;
    parentControl.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; 
  1. このコードをフォームまたは親コントロール(コントロールが別のコントロール内にある場合)の Resize イベントに入れます。
    controlToCenter.Left = (parentControl.Width- controlToCenter.Width) / 2;
    controlToCenter.Top = (parentControl.Height - controlToCenter.Height) / 2;
  1. 親コントロールがフォームにドッキングされている場合は、次のコード行を追加します。
       //adjust this based on the layout of your form
       parentControl.Height = this.ClientSize.Height; 
于 2021-07-08T14:31:28.420 に答える