DataGridView的使⽤总结
⼀、属性应⽤
1.设置单元格⿏标点击后就进⼊编辑状态
设置DataGridView控件的EditMode这个属性,即
EditMode = System.Windows.Forms.DataGridViewEditMode.EditOnEnter
这样当⿏标点击单元格时就会变成编辑状态。
2.设置DataGridView控件的⾏选择样式
设置DataGridView控件的SelectionMode这个属性,即
SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect
这样我们再选中的时候就是以⾏的形式选中的。
3.当⽤户点击列标题时不进⾏排序
在默认情况下,当⽤户点击DataGridView控件的列标题时会⾃动对内容进⾏排序,现在我们禁⽌它进⾏排序,通过设置每⼀列的SortMode这个属性来实现,即
SortMode=NotSortable
这样当我们点击列标题时就不会⾃动进⾏排序了。
4.去除DataGridView⾃带的⼀⾏(带有*号的那⼀⾏,或者是不允许⽤户添加数据)
DataGridView控件在默认的情况下会⾃动的绑上⼀⾏空数据,这⼀⾏空数据可以使⽤户进⾏数据添加,现在我们想去除这⼀列,通过设置属性
AllowUserToAddRows=false;
这样在绑定的时候就不会再显⽰这⼀⾏了。
5.设置单元格不可编辑
⽅法⼀:我们可以在控件完成数据绑定后在对DataGridView控件进⾏遍历,根据条件设置单元格的readonly 属性,使此单元格不能进⾏编辑。如下:
/
// <summary>
datagridview数据源
/// 更新数据
/// </summary>
public void UpdateData()
{
//获取数据源
dgvliucycx.DataSource =
bll_liucy.GetAllList().Tables[0].DefaultView;
//改变废弃项的背景颜⾊
ChangeColor();
//设置修改时间和修改⼈列为只读的
BandColumn();
}
/// <summary>
/// 改变DataGridView控件废弃项的背景颜⾊
/// </summary>
public void ChangeColor()
{
//将已废弃的样品记录背景⾊表⽰为蓝⾊
try
{
for  (int i = 0; i < dgvliucycx.Rows.Count;  i++)
{
if
(Convert.ToString(dgvliucycx.Rows[i].Cells["BIAOS"].Value) == "废弃")
{
dgvliucycx.Rows[i].DefaultCellStyle.BackColor = Color.Aqua;
}
}
}
catch  (Exception ex)
{
KryptonMessageBox.Show(ex.ToString());
}
}
/// <summary>
绑定修改⼈和修改时间这⼀列,进攻参考
设定修改⼈和修改⽇期、标识为只读的
⽅法⼆:我们还可以在CellBeginEdit事件中进⾏判断是否对单元格进⾏编辑,如下:
// CellBeginEdit 事件处理⽅法
private void  DataGridView1_CellBeginEdit(object
sender,
DataGridViewCellCancelEventArgs e)
{
DataGridView dgv = (DataGridView)sender;
//是否可以进⾏编辑的条件检查
if (dgv.Columns[e.ColumnIndex].Name ==
"Column1" &&
!(bool)dgv["Column2", e.RowIndex].Value)
{
// 取消编辑
e.Cancel = true;
}
}
6.DataGridView判断新增⾏
DataGridView的AllowUserToAddRows属性为True时也就是允许⽤户追加新⾏的场合下, DataGridView的最后⼀⾏就是新追加的
⾏(*⾏)。使⽤ DataGridViewRow.IsNewRow 属性可以判断哪⼀⾏是新追加的⾏。另外,通过DataGridView.NewRowIndex 可以
获取新⾏的⾏序列号。在没有新⾏的时候,NewRowIndex =  -1。
7.DataGridView⾏删除操作的⾃定义
1)⽆条件的限制⾏删除操作。
默认时,DataGridView 是允许⽤户进⾏⾏的删除操作的。如果设置 DataGridView对象的AllowUserToDeleteRows属性为 False 时,⽤户的⾏删除操作就被禁⽌了。
但是,通过 DataGridViewRowCollection.Remove 还是可以进⾏⾏的删除。
补⾜:如果 DataGridView 绑定的是 DataView 的话,通过 DataView.AllowDelete 也可以控制⾏的删除。
2)⾏删除时的条件判断处理。
⽤户在删除⾏的时候,将会引发 DataGridView.UserDeletingRow 事件。在这个事件⾥,可以判断条件并取消删除操作。
// DataGridView1 的 UserDeletingRow 事件
private void DataGridView1_UserDeletingRow(
object sender, DataGridViewRowCancelEventArgs e)
{
// 删除前的⽤户确认。
if (MessageBox.Show("确认要删除该⾏数据吗?", "删除确认",
MessageBoxButtons.OKCancel,
MessageBoxIcon.Question) != DialogResult.OK)
{
// 如果不是 OK,则取消。
e.Cancel = true;
}
}
8.DataGridView⾏头和列头的隐藏
// 列头隐藏
DataGridView1.ColumnHeadersVisible = false;
// ⾏头隐藏
DataGridView1.RowHeadersVisible = false;
10.DataGridView⾏和列的删除
' 删除名为"Column1"的列
DataGridView1.Columns.Remove("Column1");
' 删除第⼀列
DataGridView1.Columns.RemoveAt(0);
' 删除第⼀⾏
DataGridView1.Rows.RemoveAt(0);
11.设置⾏或列为只读的
上⾯已经写过设置单元格只读,现在说⼀下⾏或列为只读的。
1)设置列只读
可以通过设计器直接在设计器中设置DataGridView中的某⼀列为只读,即⽤户在点击控件时不能使控件进⼊编辑状态,我们只需设置列属性Readonly=true即可,如下:
这样当给DataGridView控件绑定数据后,ID这⼀列就是不可编辑的。
2)设置⾏只读
设置⾏只读,在这⾥是通过编程的⽅式实现,在我们绑定完数据源后,在对DataGridView控件⾥⾯的数据⾏设置为只读,这时我们也可以根据我们⾃⼰程序的需要,设置要对哪些⾏设置只读,如下:
/// <summary>
/// 设置⾏只读
/// </summary>
public void  SetReadonlyRow()
{
//遍历DataGridView控件中所有的⾏,并将其设为
只读,⽤户不可编辑
foreach (DataGridViewRow  item in
this.dgvFenxzgl.Rows)
{
将⾏设置为只读,在这⾥我们可以写⾃⼰的条
12.使窗体在屏幕中间显⽰
设置窗体的StartPosition属性,如下:
this.StartPosition = System.Windows.Forms.FormStartPosition.Manual;//this表⽰的是窗体对象
13.设置窗体不可改变⼤⼩
设置窗体不可改变⼤⼩即设置窗体的最⼤⼤⼩和最⼩⼤⼩相同即可,即设置窗体的MaximumSize属性和MinimumSize属性相等,如下:
this.MaximumSize = new System.Drawing.Size(960, 620);//this表⽰的是窗体对象
this.MinimumSize = new System.Drawing.Size(960, 620);
14.不显⽰DataGridView下⾯的新⾏
在绑定数据后,DataGridView控件下⾯会默认添加⼀条新⾏(前⾯⾏头以*号打头的),这样的⽬的是为了使⽤户能在这⾥添加数据,有时为了美观,希望在绑定的时候不显⽰该⾏,⽽是通过按钮的形式进
⾏添加,实现⽅法,我们只需设置DataGridView控件的AllowUserToAddRows属性,如下:
this.dgvFenxzgl.AllowUserToAddRows = false;
15.设置DataGridView控件中单元格的选中样式
默认情况下我们点击DataGridView控件时只是被单击的单元格选中状态,有时我们希望点击某个单元格将这⼀⾏数据全部选中或是某⼀列全部选中,这时就设置DataGridView控件的SelectionMode这个属性,如下:
//以单元格的形式选中
this.dgvFenxzgl.SelectionMode  =
DataGridViewSelectionMode.CellSelect;
//选中当前单元格的列头,如果DataGridView中某列设
置了SortMode属性为Automatic,则不能将
SelectionMode属性设置为ColumnHeaderSelect
this.dgvFenxzgl.SelectionMode  =
DataGridViewSelectionMode.ColumnHeaderSelect;
//通过单击列的标头或该列所包含的单元格选定整个
列。如果DataGridView中某列设置了SortMode属性为
Automatic,则不能将SelectionMode属性设置为
ColumnHeaderSelect
this.dgvFenxzgl.SelectionMode =
DataGridViewSelectionMode.FullColumnSelect;
//通过单击⾏的标头或是该⾏所包含的单元格选定整个
⾏。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。