private void filldgv()
{
dgvDevice.Columns.Clear();
dgvDevice.AutoGenerateColumns = false;
/*GV显示的列*/
Dictionary<string, string> dataText = new Dictionary<string, string>();
dataText.Add("DetailsID", "DetailsID");
dataText.Add("ID", "ID");
dataText.Add("DeviceID", "DeviceID");
foreach (KeyValuePair<string, string> kvp in dataText)
{
DataGridViewTextBoxColumn dgvc = new DataGridViewTextBoxColumn();
dgvc.DataPropertyName = kvp.Key;
dgvc.HeaderText = kvp.Value;
dgvc.Name = kvp.Key;
dgvc.SortMode = DataGridViewColumnSortMode.Automatic;
//dgvc.AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
dgvc.HeaderCell.Style.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
if (kvp.Key == "DetailsID" )
dgvc.Visible = false;
dgvDevice.Columns.Add(dgvc);
}
}
写了一个绑定的函数,放在form_load里面一切正常,但是若是放在绑定数据源时,第一列就怎么也隐藏不了,可是,存在多个datagridview,必须在绑定时判断,于是查了很多,感觉这个说的最为靠谱:
DataGridView第一列无法隐藏是因为默认的活动单元格在第一行第一列
所以只需修改这个默认的活动单元格再隐藏,例如
Datagridview.CurrentCell = Datagridview.Rows(0).Cells(1);
Datagridview.Columns[0].Visible = false;
自己还想了一个笨方法,但也很好用,就是调一下datagridview中列的显示顺序,把可见列调到第一个,后面的再隐藏,这样在页面上也没有任何区别。