C#winform DataGridView的学习总结

1.winform DataGridView列标题(列标头)不能完全居中的解决方法,你仔细看会发现列标题并没有完全居中,而是略微往左边一点,如果你深得这无关大雅,就没必要往下看此文了,如果你想解决此问题请看解决方法:

dataGridView1.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
foreach (DataGridViewColumn item in this.dataGridView1.Columns)
{
         item.SortMode = DataGridViewColumnSortMode.NotSortable;
}

引用:https://www.cnblogs.com/tonightdream/p/5423956.html

2.DataGridView的自适应列宽,通常设置最后一列宽度填充;

this.dataGridView1.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill;
//如果希望第一列宽度不变:
this.dataGridView1.Columns[0].Width = 40;

3.去掉列头或行头:

// 列头隐藏
dataGridView1.ColumnHeadersVisible = false;
// 行头隐藏
dataGridView1.RowHeadersVisible = false;

4.添加新行数据:

int index = this.dataGridView1.Rows.Add();
this.dataGridView1.Rows[index].Cells[0].Value = index;
this.dataGridView1.Rows[index].Cells[1].Value = ComBox1.Text;
this.dataGridView1.Rows[index].Cells[2].Value = ComBox2.Text;

5.某个单元格数据居中:

dataGridView1.Rows[index].Cells[2].Style.Alignment = DataGridViewContentAlignment.MiddleCenter;

6.选中其中一个单元格时自动选中整行记录:

this.dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;

7.删除所有行:

this.dataGridView1.Rows.Clear();

8.删除当前选中的一行:

int num = this.dataGridView1.CurrentRow.Index;
this.dataGridView1.Rows.RemoveAt(s);

9.删除当前选中的所有行:

foreach (DataGridViewRow dr in this.dataGridView1.SelectedRows)
{
        if (dr.IsNewRow == false)
               this.dataGridView1.Rows.Remove(dr);
}

10.设置标题栏颜色:

this.dataGridView1.ColumnHeadersDefaultCellStyle.BackColor = Color.Green;
dataGridView1.EnableHeadersVisualStyles = false;  //如果启动了可视样式的时候,BackColor和ForeColor的值会被忽略

11.设置标题栏高度(Height):

dataGridView1.RowTemplate.Height = 40; //改变行的高度;
//改变标题的高度;
dataGridView1.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing;
dataGridView1.ColumnHeadersHeight = 50;
//设置标题内容居中显示;
dataGridView1.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
dataGridView1.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
//自己设置标题内容;
dataGridView1.AutoGenerateColumns = false;

12.添加首行或尾行:

DataGridViewRow dr = new DataGridViewRow();
dr.CreateCells(dataGridView1);
dr.Cells[0].Value = 20;
dr.Cells[1].Value = 46;
dr.Cells[2].Value = 345;
dataGridView1.Rows.Insert(0, dr);                     //添加的行作为第一行
//dgv.Rows.Add(dr);                         //添加的行作为最后一行

13.设置标题栏禁止排序:
编辑列–>选定列–>行为–>SortMode–>NotSortable
或者:
for (int i = 0; i < this.dataGridView1.Columns.Count; i++)
{
this.dataGridView1.Columns[i].SortMode = DataGridViewColumnSortMode.NotSortable;
}

14.取消默认选中行:
在添加数据后会默认选中第 一个单元格或者第一行,这几个代码,只要放对地方,任意一个都能实现取消选中的效果:

    dataGridView1.ClearSelection();
    //dataGridView1.CurrentCell = null;
    //dataGridView1.Rows[0].Selected = false;

15.取消用户新追加的行:

dataGridView1.AllowUserToAddRows = false;

16.对某一栏进行排序:

this.dataGridView1.Sort(dataGridView1.Columns[3], ListSortDirection.Ascending); //Ascending升序,Descending降序

17.在HeaderCell中显示行号的方法:选中DataGridView控件,然后点击事件按钮,找到RowStateChanged;

private void dataGridView1_RowStateChanged(object sender, DataGridViewRowStateChangedEventArgs e)
{
        for (int i = 0; i < this.dataGridView1.Rows.Count; i++)
        {
             DataGridViewRow r = this.dataGridView1.Rows[i];
             r.HeaderCell.Value = string.Format("{0}", i + 1);
        }
        this.dataGridView1.Refresh();
}

注:行号没有完全显示出来的解决办法是将DataGridView的RowHeadersWidthSizeMode属性设置为AutoSizeToAllHeaders、AutoSizeToDisplayedHeaders或者AutoSizeToFirstHeader。

18.禁止一次选中多行单元格
设置MultiSelect属性值为False;

19.DataGridView隔行显示不同的颜色:
AlternatingRowsDefaultCellStyle 属性:获取或设置应用于 DataGridView 的奇数行的默认单元格样式。
RowsDefaultCellStyle 属性:获取或设置应用于 DataGridView 的行单元格的默认样式。

dataGridView1.RowsDefaultCellStyle.BackColor = Color.Bisque;
dataGridView1.AlternatingRowsDefaultCellStyle.BackColor = Color.Beige

还可以参考:https://www.cnblogs.com/zgqys1980/archive/2010/03/23/1692205.html

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值