1

winform に datagridview があり、2 つのことをしたいと考えています。データグリッドのサイズに基づいてすべての列が表示されるように (スクロールなしで)、データグリッドのサイズを変更します。winform の幅を変更します。

  • 以下のコードを試してみましたが、うまくいきません*

        int width = 0; 
        foreach (DataGridViewColumn col in information.Columns)
        {
            width += col.Width;
        }
    
        width += information.RowHeadersWidth;
    
        information.ClientSize = new Size(width + 100,height);
    
4

2 に答える 2

0

こんにちは私は以下のコードを使用してこれを機能させる方法を見つけました。情報はデータグリッドであり、これはフォームです。

       int width = 0;

        this.information.RowHeadersVisible = false;
        for (int i = 0; i < information.Columns.Count; i++)
            width += information.Columns[i].GetPreferredWidth(DataGridViewAutoSizeColumnMode.AllCells, true);

        int rows = 0;

        this.information.RowHeadersVisible = false;
        for (int i = 0; i < information.Rows.Count; i++)
            rows += information.Rows[i].GetPreferredHeight(i, DataGridViewAutoSizeRowMode.AllCells, true);


        information.Size = new Size(width +20, rows+50);
        this.Width = width + 50;
于 2012-09-26T14:46:55.367 に答える
0

操作の簡単な順序:

  1. DataGridView の AutoSizeColumnMode プロパティを AllCells に設定します。
  2. すべての列の幅プロパティに加えて、コントロールの境界線から余分な幅を確保するためのたるみなどを追加します (おそらくプラス 2)​​。
  3. DataGridView の Width プロパティを、計算した幅に設定します。
  4. フォームの幅を DataGridView の幅に設定します。

実際にコーディングするのはあなた次第です。

編集:私は今コンパイラの前にいるので、これをまとめます:

Visual Studio に移動します。新しいプロジェクトを開始します。デザイナーのフォームには何も配置しないでください。このコードを初期化子で使用するだけです。

public Form1()
{
    InitializeComponent();

    // Create a DataGridView with 5 Columns
    // Each column is going to sized at 100 pixels wide which is default
    // Once filled, we will resize the form to fit the control
    DataGridView dataGridView1 = new DataGridView();
    for (int i = 0; i < 5; i++)
    {
        DataGridViewTextBoxColumn col = new DataGridViewTextBoxColumn();
        dataGridView1.Columns.Add(col);
    }
    dataGridView1.Location = new Point(0, 0);

    // Add the DataGridView to the form
    this.Controls.Add(dataGridView1);

    // Step 2:
    // Figure out the width of the DataGridView columns
    int width = 0;
    foreach (DataGridViewColumn col in dataGridView1.Columns)
        width += col.Width;
    width += dataGridView1.RowHeadersWidth;

    // Step 3:
    // Change the width of the DataGridView to match the column widths
    // I add 2 pixels to account for the control's borders
    dataGridView1.Width = width + 2;

    // Step 4:
    // Now make the form's width equal to the conbtrol's width
    // I add 16 to account for the form's boarders
    this.Width = dataGridView1.Width + 16;
}

このコードは、DataGridView5 つの列を持つ を作成し、要求どおりにコントロールとフォームのサイズを変更します。上記で概説した正確な手順に従いました (列にデータがないため、手順 1 を除く)。

このコードは機能します。それで、あなたのものがうまくいかないのなら、あなたが行っている何か他のばかげたことがあるにちがいなく、私はあなたを助けることができません.

于 2012-09-25T00:50:59.090 に答える