C#winform的datagridview去除列标头自带的排序,去除初始选中状态,添加自定义checkbox

雨燕双飞 提交于 2020-01-17 13:48:08
//去除datagridview列表头排序
foreach (DataGridViewColumn item in dataList.Columns)
    item.SortMode = DataGridViewColumnSortMode.NotSortable;
//去掉datagridview初始选中行
dataList.ClearSelection();//dataList,datagridview的Name
//遍历datagridview中的行,dataList-datagridview的Name
List<UCCheckBox> ckBox = new List<UCCheckBox>();//checkbox列表
for (int i = -1; i < dataList.Rows.Count; i++)
{
    UCCheckBox ckBoxNew = new UCCheckBox();//自定义控件checkbox,可以换成你自己的控件
    ckBoxNew.TextValue = "";
    ckBoxNew.Checked = false;
    //给checkBox确定所在行位置
    Rectangle rect = this.dataList.GetCellDisplayRectangle(-1, i, true);//-1行标题所在列
    //ckBox.Size = new Size(this.dataGridView1.Columns[0].Width, 28);
    ckBoxNew.Size = new Size((rect.Width / 2), rect.Height);
    //ckBox.Location = rect.Location;
    ckBoxNew.Location = new Point(rect.Left + 16, rect.Top);

    ckBoxNew.CheckedChangeEvent += new EventHandler(ckBox_CheckedChanged);

    ckBox.Add(ckBoxNew);

    this.dataList.Controls.Add(ckBoxNew);
    //ckBoxNew.Dispose();

    Application.DoEvents();
}
//说明:datagridview每添加一个控件占用一个句柄,添加过多,容易出错
//datagridview自带的checkbox
DataGridViewCheckBoxColumn columncb = new DataGridViewCheckBoxColumn();
columncb.FlatStyle = FlatStyle.Popup ;
columncb.HeaderText = "👆全选";
columncb.Name = "cb_check";
columncb.TrueValue = true;
columncb.FalseValue = false;
columncb.DataPropertyName = "IsChecked";
dataList.Columns.Insert(0, columncb);//dataList--datagridview的Name

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!