Har*_*dik 4 datagridview datagridviewcolumn winforms
我在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;
Run Code Online (Sandbox Code Playgroud)
我的问题是我分配给dgv的数据源中可以有任意数量的列.因此,如果列数很少(例如1或2),则dgv大小非常小,右侧的空白区域看起来非常难看.我不能使用auto autosizecolumnmode来,fill因为当有更多的列时,所有列都会缩小并且扩展列不会给我滚动到底部
所以我的要求是
有什么事件或属性我可以使用?
谢谢你的期待.
试试这个 :
dgTemp.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
Run Code Online (Sandbox Code Playgroud)
更新:
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
Run Code Online (Sandbox Code Playgroud)
更新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
}
Run Code Online (Sandbox Code Playgroud)