子コントロールのサイズを変更するときにフォームのサイズを変更する方法について多くの質問を見つけましたが、もっと簡単なことをしようとしています
フォームの幅に合わせて、datagridviewの幅を自動的にサイズ変更したいと思います。フォームにdatagridviewを配置しただけで、フォームのサイズが変更されてもグリッドは同じサイズのままになります。これは、コントロールをフォームの境界に「接続」する小さな一定の距離のスナップを使用する場合でも発生します。
ある種のform.resizeイベントを処理する必要がありますか、それともVSで設定できるプロパティはありますか?
コントロールのアンカーを使用します。 Anchor
のプロパティGridView
をTop, Left, Right
に設定すると、コンテナに合わせてサイズが変更されます。 GridView
がコンテナ(ex Panel
など)内に配置されている場合、Panel
も固定する必要があります。
DataGridViewのプロパティを設定します。
Anchor: Top,Left
AutoSizeColumn: Fill
Dock: Fill
親のすべての側(上、下、左、右)にフックするようにコントロールのアンカープロパティを設定します。
ここには2つのオプションがあります。
両方のプロパティを探し、どちらがニーズに合っているかを見つけます。
http://msdn.Microsoft.com/en-us/library/system.windows.forms.control.anchor.aspx
そして
http://msdn.Microsoft.com/en-us/library/system.windows.forms.control.dock.aspx
「アンカー」プロパティは、フォーム、パネル、グループボックスなどのあらゆるコンテナに存在します。
たとえば、左側を1つ、または4つすべての側面を選択できます。
アンカーとは、サイズを変更しても、選択した辺とコンテナのエッジ間の距離が同じままであることを意味します。
たとえば、データグリッドビューdgv1
は、Form1
の中間にあります。 「アンカー」は、dgv1の左側と上側です。アプリが実行され、異なる画面解像度またはフォームサイズの変更からサイズ変更が行われると、dgv1
の上部と左側がそれに応じて変更され、From1
のエッジからの距離が維持されます。底面と右側はそうではありません。
完全なヘッダーテキストを表示する場合
これにより、ヘッダーに完全なヘッダーテキストが表示されるように列のサイズが自動的に変更されます。
dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
ドックモードの場合
パネルまたはフォームにドックモードを表示する場合。
dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
フォームコンストラクターで、次のようなイベントハンドラーを作成できます。
this.SizeChanged(frm_sizeChanged);
次に、グリッドのサイズを適切に変更するイベントハンドラーを作成します。例:
private void frm_sizeChanged(object sender, EventArgs e)
{
dataGrid.Size = new Size(100, 200);
}
これらの数字を好きなものに置き換えます。
私にとって、アンカーは、4つの側面すべてに設定した場合にのみ機能します。
固定:上、下、左、右
アンカーを左のみに設定すると、フォームが左下にサイズ変更されたときにオブジェクト全体が移動します。 4つのサイズをすべて設定すると、親のサイズが変更されたときにオブジェクトのサイズが実際に変更されます。
Dockプロパティで「Fill」を選択する必要があります。
データグリッドビューのプロパティでこれを行うことができるかどうか、あなたが尋ねていることを誤解していない限り。 Anchorプロパティを、ロックする側に設定する必要があります。
layoutのdatagridviewの「Dock」プロパティを、上、左、下、右のいずれかのプロパティに設定します。 OK?