Datagridview列宽

时间:2012-09-11 10:17:12

标签: winforms datagridview datagridviewcolumn

enter image description here我在Winform中遇到与datagridview相关的问题。

我的左侧面板中有一个表名列表。当我点击表格I时,在右侧面板中显示表格内容。我通过获取数据并将数据源分配给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大小非常小,右侧的空白区域看起来非常难看。 我无法使用自动autosizecolumnmodefill,因为当有更多列时,所有列都会收缩并且扩展列不会给我滚动到底部

所以我的要求是

  1. 应填写datagridview中的所有空格。 (应覆盖所有区域)
  2. 如果有更多列,则应显示滚动,以便更好看
  3. 我可以使用任何事件或属性吗?

    感谢您的期待。

1 个答案:

答案 0 :(得分: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
        }