web-dev-qa-db-ja.com

DataGridView、DataTableへの幅と高さの調整

DataTableをGridViewにバインドしています。 DataTableの高さと幅には調整されません。すべての列を表示するグリッドの幅をストレッチし、行が少ない場合は高さを縮小するにはどうすればよいですか。

enter image description here

14
Gainster

データグリッドのプロパティに移動するだけです=>

次に、セクションLayout =>

AutoSizeColumnsModeはそれをFillに設定します...

21

データに合わせて列のサイズを自動化し(幅方向)、グリッドビューに合わせてフォームのサイズを自動化するには(幅方向)、次のコードを使用します。

foreach (DataGridViewColumn column in dataGridView1.Columns)
                column.AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;

this.Width = dataGridView1.Width + 100;

ここで、dataGridView1はこの例のDatagridviewの名前であり、thisはフォームのインスタンスを参照しています。 100は、datagridviewよりもフォームに必要なピクセル数の定数です。 (注:フォームとデータのグリッドビューがユーザーの画面よりも広くないことを確認するために、幅をチェックする必要がある場合があります)

データグリッドビューを行に合わせて(高さ方向に)自動サイズ設定してから、フォームをグリッドビューに合わせて(高さ方向に)自動サイズ変更するには、次のコードを使用します。

int totalRowHeight = dataGridView1.ColumnHeadersHeight;

foreach (DataGridViewRow row in dataGridView1.Rows)
    totalRowHeight += row.Height;

dataGridView1.Height = totalRowHeight;
this.Height = dataGridView1.Height + 100;

ここで、dataGridView1はこの例のDatagridviewの名前であり、thisはフォームのインスタンスを参照しています。 100は、datagridviewよりもフォームが必要なピクセル数の定数です。 (注:フォームとデータのグリッドビューがユーザーの画面よりも高くないことを確認するために、高さをチェックする必要がある場合があります)

3
Jason Moore

まず、フォームは、DataGridViewが展開してすべての列を表示するのに十分な大きさである必要があります。スクリーンショットでは、十分に広く見えません。 datagridviewのサイズは手動で設定できますが、実行時に各列にいくらになるかわからないため、設計時に各列の正確な幅がわかることはめったにありません。たとえば、Invoicedescription列には、長さが異なる文字列を含めることができます。

あなたのような場合に私が通常行うことは、フォームにスプリッターコントロールを配置することです。上部のテキストボックスと[請求書のインポート]ボタンはスプリッターコントロールの上部パネルに表示され、DataGridViewは下部パネルに表示されます。次に、DataGridViewのDockプロパティを設定して、スプリッターコントロールの下部パネルを埋めます。このように、ユーザーがフォームのサイズを変更すると、DataGridViewはそれに合わせて拡大/縮小します。

DataGridView.AutoResizeRowsプロパティを設定することにより、列の表示方法をさらに制御できます。

これをオプションとして指定するだけで、グリッドを表示しているデータに自動的にサイズ変更する方法を知りません。行の高さ/幅を計算してから、コードでグリッドのサイズを手動で変更できる場合がありますが、最初にその要件が本当に必要かどうかを確認します。

2
Casey Wilkins

これは、最初のヘッダー行の高さが異なる場合(たとえば、長いヘッダーが折り返されている場合)でも、すべての行の高さが同じであると想定して機能します。

If List.RowCount = 0 Then
  List.Height = 0
ElseIf List.RowCount = 1 Then
  List.Height = List.ColumnHeadersHeight
Else
  List.Height = List.ColumnHeadersHeight + List.Rows(1).Height * (List.RowCount + 1)
End If
1
stenci

Datagridviewautosizecolumnを "All"に設定します。次に、datagridviewを含むフォームで、データが読み込まれる場所(データが読み込まれた後でなければなりません)で、必要に応じてloadイベントハンドラーまたはその他のイベントハンドラーにデータグリッドビューを入力すると仮定します。 :(VB)

Me.Width = DataGridView1.Width + 50 ' Number of pixels wider than the datagridview you want the form to be.

datagridview1は、datagridviewコントロールの名前です。私は、datagridviewコントロールを含むフォームを指します。

データセットのデータセットの大きさに応じて、ウィンドウを最大化するか、ウィンドウを上下に固定して、フィットを確保する必要がある場合があります。

0
DavidG