4

ここに画像の説明を入力してくださいWinformのdatagridviewに関連する問題があります。

左側のパネルにテーブル名のリストがあります。[テーブル]をクリックすると、右側のパネルにテーブルの内容が表示されます。データをフェッチしてデータソースをdgvに割り当てることにより、datagridviewにデータを表示しています。

次のプロパティをdgvに設定しています。

dgTemp.Dock = DockStyle.Fill;
dgTemp.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
dgTemp.AutoSize = true;
dgTemp.DefaultCellStyle.WrapMode = DataGridViewTriState.True;
dgTemp.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;
dgTemp.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
dgTemp.ReadOnly = true;
dgTemp.AutoGenerateColumns = true;
dgTemp.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
dgTemp.AllowUserToAddRows = false;

私の問題は、dgvに割り当てているデータソースに任意の数の列が存在する可能性があることです。したがって、列の数が非常に少ない場合(たとえば、1または2)、dgvサイズは非常に小さくなり、右側の空きスペースは非常に醜い外観になります。列が多いとすべての列が縮小し、列を展開しても下部をスクロールできないため、自動autosizecolumnmodeを使用できません。fill

だから私の要件は

  1. datagridviewのすべてのスペースを埋める必要があります。(すべての領域をカバーする必要があります)
  2. 列が多い場合は、スクロールが表示されるので、見栄えが良くなります。

使用できるイベントやプロパティはありますか?

期待してくれてありがとう。

4

1 に答える 1

5

これを試して :

dgTemp.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;

アップデート :

 dataGridView1.FirstDisplayedScrollingRowIndex = 5; //use 5 because you want to start from 5
        //you can have a horizontal scroll bar with this code :
        dataGridView1.FirstDisplayedScrollingColumnIndex = 10; //you can choose every column you wanna start with that column

更新 2:

int rows = dataGridView1.Rows.Count;
        int columns = dataGridView1.Columns.Count;
        if (rows < 5 && columns < 10)
        {
            dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
        }
        else
        {
            dataGridView1.FirstDisplayedScrollingRowIndex = 5; //use 5 because you want to start from 5
            //you can have a horizontal scroll bar with this code :
            dataGridView1.FirstDisplayedScrollingColumnIndex = 10; //you can choose every column you wanna start with that column
        }
于 2012-09-11T10:20:48.157 に答える