C# Datagridview完整攻略
0.行列,宽度自适应,加编号,背景色。
grid.Columns.Add("ID", "ID");
grid.Columns["ID"].DisplayIndex = 0;
for (int i = 0; i < grid.Rows.Count; i++)
{
grid.Rows[i].Cells["ID"].Value = i + 1;
}
grid.RowHeadersVisible = false;
grid.AllowUserToAddRows = false;
grid.RowsDefaultCellStyle.Font = new Font("宋体", 8, FontStyle.Regular);
grid.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;
grid.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
grid.BackgroundColor = Color.CadetBlue;
1. DataGridView当前的单元格属性取得、变更
2. DataGridView编辑属性
3. DataGridView最下面一列新追加行非表示
4. DataGridView判断当前选中行是否为新追加的行
5. DataGridView删除行可否设定
6. DataGridView行列不表示和删除
1.当前的单元格属性取得、变更
[C#]
'当前选中单元的值
Console.WriteLine(DataGridView1.CurrentCell.Value)
'当前列的Index值
Console.WriteLine(DataGridView1.CurrentCell.ColumnIndex)
'当前单元的行Index值
Console.WriteLine(DataGridView1.CurrentCell.RowIndex)
'将控件中(0, 0)处的值,赋给当前单元格.
DataGridView1.CurrentCell =DataGridView1[0, 0]
2.DataGridView编辑属性
全部单元格编辑属性
[C#]
'DataGridView1只读属性
DataGridView1.ReadOnly = True
指定行列单元格编辑属性
[C#]
DataGridView1.Columns[1]ReadOnly = True
DataGridView1.Rows[2].ReadOnly = True
DataGridView1[0, 0].ReadOnly = True
根据条件判断单元格的编辑属性
下例中column2的值是True的时候,Column1设为可编辑
[C#]
private void DataGridView1_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)
{
if (this.DataGridView1.Columns[e.ColumnIndex].Name.ToString().Equals("Column2"))
{
if (DataGridView1["Column2", e.RowIndex].Value.ToString().ToLower().Equals("true"))
{
DataGridView1["Column1", e.RowIndex].ReadOnly = false;
}
else
{
DataGridView1["Column1", e.RowIndex].ReadOnly = true;
}
}
}
3.DataGridView最下面一列新追加行非表示
[C#]
DataGridView1.AllowUserToAddRows = False
4.判断当前选中行是否为新追加的行
[C#]
if (DataGridView1.CurrentRow.IsNewRow)
{
Console.WriteLine("当前行,是新添加的行");
}
else
{
Console.WriteLine("当前行,不是新添加的行");
}
5. DataGridView删除行可否设定
[C#]
DataGridView1.AllowUserToDeleteRows = False
根据条件判断当前行是否要删除
[C#]
代码
1 private void DataGridView1_UserDeletingRow(object sender, DataGridViewRowCancelEventArgs e)
2 {
3
4
5
6 if (MessageBox.Show("确定要删除吗?", "删除确认", MessageBoxButtons.OKCancel, MessageBoxIcon.Question).Equals(System.Windows.Forms.DialogResult.OK))
7 {
8
9 }
10 else
11 {
12 e.Cancel = true;
13 }
14 }
6. DataGridView行列不表示和删除
行列不表示
[C#]
'DataGridView1的第一列不表示
DataGridView1.Columns[0].Visible = False
'DataGridView1的第一行不表示
DataGridView1.Rows[0].Visible = False
行列表头部分不表示
[C#]
DataGridView1.ColumnHeadersVisible = False
DataGridView1.RowHeadersVisible = False
指定行列删除
[C#]
DataGridView1.Columns.Remove("Column1")
DataGridView1.Columns.RemoveAt(0)
DataGridView1.Rows.RemoveAt(0)
选择的行列删除(多行列)
[C#]
'DataGridView1删除选中的行
foreach (DataGridViewRow r in DataGridView1.SelectedRows)
{
if (!r.IsNewRow)
{
DataGridView1.Rows.Remove(r);
}
}
7. DataGridView行列宽度高度设置为不能编辑
8. DataGridView行高列幅自动调整
9. DataGridView指定行列冻结
10. DataGridView列顺序变更可否设定
11. DataGridView行复数选择
12. DataGridView选择的行、列、单元格取得
7. DataGridView行列宽度高度设置为不能编辑
[C#]
'DataGridView1的列的宽设为不能编辑
DataGridView1.AllowUserToResizeColumns = False
'DataGridView1的行的高设为不能编辑
DataGridView1.AllowUserToResizeRows = False
指定行列宽度高度设置为不能编辑
[C#]
'DataGridView1指定列宽度设置为不能编辑
DataGridView1.Columns[0].Resizable = DataGridViewTriState.False
'DataGridView1指定行高度设置为不能编辑
DataGridView1.Rows[0].Resizable = DataGridViewTriState.False
列幅行高最小值设定
[C#]
'列幅最小值设定为100
DataGridView1.Columns[0].MinimumWidth = 100
'行高最小值设定为50
DataGridView1.Rows[0].MinimumHeight = 50
行列表头部分行高列幅设置为不能编辑
[C#]
行列表头部分行高设置为不能编辑
DataGridView1.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing
行列表头部分列幅设置为能编辑
DataGridView1.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.EnableResizing
8. DataGridView行高列幅自动调整
[C#]
根据内容,列幅自动调整
DataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells
根据内容,行高自动调整
DataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells
表头部分行高列幅自动调整
[C#]
'表头列高自動調整
DataGridView1.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize
'表头行幅自動調整
DataGridView1.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders
指定列自动调整
[C#]
'指定列的列幅自動調整
DataGridView1.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells
9. DataGridView指定行列冻结
列冻结(当前列以及左侧做所有列)
[C#]
'DataGridView1的左側2列固定
DataGridView1.Columns[1].Frozen = True
行冻结(当前行以及上部所有行)
[C#]
'DataGridView1的上部2行固定
DataGridView1.Rows[2].Frozen = True
指定单元格冻结(单元格所在行上部分所有行,列左侧所有列)
[C#]
DataGridView1[0, 0]. Frozen = True
10. DataGridView列顺序变更可否设定
[C#]
'DataGridView1的列的位置设定为允许改变
DataGridView1.AllowUserToOrderColumns = True
但是如果列冻结的情况下,冻结的部分不能变更到非冻结的部分。
变更后列位置取得
[C#]
'取得列"Column1"現在的位置
Console.WriteLine(DataGridView1.Columns["Column1"].DisplayIndex)
'列"Column1"移動到最前面
DataGridView1.Columns["Column1"].DisplayIndex = 0
11. DataGridView行复数选择
不可选择多行
[C#]
'DataGridView1不可选择多行
DataGridView1.MultiSelect = False
单元格选择的时候默认为选择整行
[C#]
'单元格选择的时候默认为选择整行
DataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect
12. DataGridView选择的行、列、单元格取得
[C#]
'输出选择的单元格位置
Console.WriteLine("选择的单元格位置")
foreach (DataGridViewCell c in DataGridView1.SelectedCells)
{
Console.WriteLine(c.ColumnIndex + "," + c.RowIndex);
}
'输出选择的行位置
Console.WriteLine("选择的行位置")
foreach (DataGridViewRow r in dgvBeforeStep.SelectedRows)
{
Console.WriteLine(r.Index);
}
''输出选择的列位置
foreach (DataGridViewColumn col in dgvBeforeStep.SelectedColumns)
{
Console.WriteLine(col.Index);
}
指定行、列、单元格取得
[C#]
'(0, 0)的选中
DataGridView1[0, 0].Selected = True
'Index为1的行选中
DataGridView1.Rows[1].Selected = True
'Index为2的列选中
DataGridView1.Columns[2].Selected = True
13. DataGridView指定单元格是否表示
14. DataGridView表头部单元格取得
15. DataGridView表头部单元格文字列设定
16. DataGridView选择的部分拷贝至剪贴板
17.DataGridView粘贴
18. DataGridView单元格上ToolTip表示设定(鼠标移动到相应单元格上时,弹出说明信息)
13. DataGridView指定单元格是否表示
[C#]
if (DataGridView1 [2,0].Displayed&& DataGridView1 [2,0].Visible)
{
DataGridView1.CurrentCell = DataGridView1[2,0];
}
14. DataGridView表头部单元格取得
[C#]
'DataGridView1第一列表头改变
DataGridView1.Columns[0].HeaderCell.Value = "第一列"
'DataGridView1第一行表头改变
DataGridView1.Rows[0].HeaderCell.Value = "第一行"
'DataGridView1左上角单元格值改变
DataGridView1.TopLeftHeaderCell.Value = "左上"
15. DataGridView表头部单元格文字列设定
更改列Header表示文字列
[C#]
'DataGridView1改变第一列头部单元格文字
DataGridView1.Columns[0].HeaderText = "第一列"
更改行Header表示文字列
[C#]
'DataGridView1行的头部单元格为序号
for (int i = 0; i < DataGridView1.Rows.Count-1; i++)
{
DataGridView1.Rows[i].HeaderCell.Value=i.ToString();
}
'行的宽度自动调节
DataGridView1.AutoResizeRowHeadersWidth( DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders)
最左上Header单元格文字列
[C#]
'修改最左上单元格
DataGridView1.TopLeftHeaderCell.Value = "/"
16. DataGridView选择的部分拷贝至剪贴板
拷贝模式设定
[C#]
DataGridView1.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableWithoutHeaderText
选中部分拷贝
[C#]
Clipboard.SetDataObject(DataGridView1.GetClipboardContent())
17.DataGridView粘贴
[C#]
if (DataGridView1.CurrentCell.Value == null)
{
return;
}
int insertRowIndex = DataGridView1.CurrentCell.RowIndex;
string pasteText=Clipboard.GetText();
if(string.IsNullOrEmpty(pasteText))
{
return;
}
string[] lines=pasteText.Split('\r');
bool isHeader=true;
foreach(string line in lines)
{
if(isHeader)
{
isHeader=false;
}
else
{
string[] vals=line.Split('\t');
if (vals.Length - 1 != DataGridView1.ColumnCount)
{
throw new ApplicationException("列数错误");
}
DataGridViewRow row = DataGridView1.Rows[insertRowIndex];
row.HeaderCell.Value=vals[0];
for(int i=0;i<row.Cells.Count-1;i++)
{
row.Cells[i].Value=vals[(i+1)];
}
insertRowIndex+=1;
}
}
18. DataGridView单元格上ToolTip表示设定(鼠标移动到相应单元格上时,弹出说明信息)
[C#]
指定单元格
DataGridView1[0, 0].ToolTipText = "指定单元格"
指定列
DataGridView1.Columns[0].ToolTipText = "指定列"
指定行
DataGridView1.Rows[0].HeaderCell.ToolTipText = "指定行"
CellToolTipTextNeeded事件,在多个单元格使用相同的ToolTips的时候,可以用该事件,下例为显示当前单元格的行号和列号
[C#]
'CellToolTipTextNeeded事件
private void DataGridView1_CellToolTipTextNeeded(object sender, DataGridViewCellToolTipTextNeededEventArgs e)
{
e.ToolTipText = e.RowIndex.ToString() + "," + e.ColumnIndex.ToString();
}
19. DataGridView中的ContextMenuStrip属性
20. DataGridView指定滚动框位置
21. DataGridView手动追加列
22. DataGridView全体分界线样式设置
23. DataGridView根据单元格属性更改显示内容
24. DataGridView新追加行的行高样式设置る
25. DataGridView新追加行单元格默认值设置
19. DataGridView中的ContextMenuStrip属性
[C#]
DataGridView1.ContextMenuStrip = this.ContextMenuStrip1
DataGridView1.Columns[0)].ContextMenuStrip = this.ContextMenuStrip2
DataGridView1.Columns[0].HeaderCell.ContextMenuStrip = this.ContextMenuStrip2
DataGridView1.Rows[0].ContextMenuStrip = this.ContextMenuStrip3
DataGridView1[1, 0].ContextMenuStrip = this.ContextMenuStrip4
也可以用CellContextMenuStripNeeded、RowContextMenuStripNeeded属性进行定义
[C#]
1 private void DataGridView1_CellContextMenuStripNeeded(object sender, DataGridViewCellContextMenuStripNeededEventArgs e)
2 {
3 if (e.RowIndex<0)
4 {
5 e.ContextMenuStrip = this.contextMenuStrip1;
6 }
7 else if (e.ColumnIndex<0)
8 {
9 e.ContextMenuStrip = this.contextMenuStrip2;
10 }
11 }
12
20. DataGridView指定滚动框位置
[C#]
DataGridView1.FirstDisplayedScrollingRowIndex = 0
DataGridView1.FirstDisplayedScrollingColumnIndex = 0
21. DataGridView手动追加列
[C#]
DataGridView1.AutoGenerateColumns = False
DataGridView1.DataSource = BindingSource1
DataGridViewTextBoxColumn textColumn=new DataGridViewTextBoxColumn()
textColumn.DataPropertyName = "Column1"
textColumn.Name = "Column1"
textColumn.HeaderText = "Column1"
DataGridView1.Columns.Add(textColumn)
22. DataGridView全体分界线样式设置
[C#]
DataGridView1.BorderStyle = BorderStyle.Fixed3D
单元格上下左右分界线样式设置
[C#]
DataGridView1.AdvancedCellBorderStyle.Top = DataGridViewAdvancedCellBorderStyle.InsetDouble
DataGridView1.AdvancedCellBorderStyle.Right = DataGridViewAdvancedCellBorderStyle.Inset
DataGridView1.AdvancedCellBorderStyle.Bottom = DataGridViewAdvancedCellBorderStyle.Inset
DataGridView1.AdvancedCellBorderStyle.Left = DataGridViewAdvancedCellBorderStyle.InsetDouble
23. DataGridView根据单元格属性更改显示内容
如下例,当该列是字符串时,自动转换文字大小写
[C#]
if (DataGridView1.Columns[e.ColumnIndex].Name.Equals("Column1") && e.Value.GetType().Equals("String"))
{
string str = e.Value.ToString();
e.Value = str.ToUpper();
e.FormattingApplied = true;
}
24. DataGridView新追加行的行高样式设置
行高设置
[C#]
DataGridView1.RowTemplate.Height = 50
DataGridView1.RowTemplate.MinimumHeight = 50
样式设置
[C#]
'设置背景色为黄色
DataGridView1.DefaultCellStyle.BackColor = Color.Yellow
25. DataGridView新追加行单元格默认值设置
[C#]
private void DataGridView1_DefaultValuesNeeded(object sender, DataGridViewRowEventArgs e)
{
e.Row.Cells["Column1"].Value = 0;
e.Row.Cells["Column2"].Value = "-";
}
C# Datagridview完整攻略相关推荐
- 时空之轮Android手柄,时空之轮图文完整攻略(超时空之轮(ChronoTrigger)最详细攻略图文详解)...
时空之轮图文完整攻略(超时空之轮(ChronoTrigger)最详细攻略图文详解),哪吒游戏网给大家带来详细的时空之轮图文完整攻略(超时空之轮(ChronoTrigger)最详细攻略图文详解)介绍,大 ...
- QQ发送json红包卡片消息(完整攻略)
有时候看到别人能发送QQ红包,可以点进去却不是红包.这么炫酷的技能你想学会吗? 不仅能发红包,还可以发送各种好玩炫酷的功能. 有哪些消息可以用呢? 接下来,将奉上完整攻略: 一.准备工作:下载借助的软 ...
- android4.2.2系统投屏,一学就会!手机投屏电视完整攻略
原标题:一学就会!手机投屏电视完整攻略 想在电视上玩<王者荣耀>?想弄明白怎样投屏?看完这篇文章,你就会了~ 目前主流的投屏技术有以下三种:DLNA,airplay,miracast技术, ...
- 程序员接私活最最完整攻略
接私活对于程序员这个圈子来说是一个既公开又隐私的话题,当你竭尽全力想要去接私活的时候一定做过这样的事情,百度搜索"程序员如何接私活"."程序员在哪里接外包"等等 ...
- android开发新浪微博客户端 完整攻略 [新手必读]
android开发新浪微博客户端 完整攻略 [新手必读][转]2011-04-06 10:49:19 http://www.eoeandroid.com/forum-viewthread-tid-6 ...
- Wordpress漏洞,WPScan使用完整攻略
转载https://blog.csdn.net/m0_37438418/article/details/81109660 爆路径方法: 1.http://www.chouwazi.com/wp-adm ...
- 你面试稳了!通关LeetCode刷题完整攻略,省时又高效
关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 作者:穷码农 来源:https://zhuanlan.zhihu.com/p/10 ...
- 金庸群侠传之武林浩荡1.7全隐藏完整攻略流程(图文)
连接:http://www.kuaihou.com/youxi/26036.html 小编在玩<金庸群侠传之武林浩荡>中成功通关多次,但由于打到的历练物品不一样,所以每次的历练方式也许都不 ...
- etf文件服务器,ETF基金投资完整攻略(干货分享)
前言:最近粉丝很多私信于我,问我一堆问题,真是焦头烂额,谁叫我是小编,不是大咖呢,尽量回复大家. '老师,我这些科技类ETF基金收益降了一半要不要卖',有收益就好,担心就落袋为安. '老师,今天股市大 ...
最新文章
- redis主从复制、高可用和集群
- uwsgi 参数解释
- linux下更改MySQL数据库存储目录
- 递归方法计划销售订单的计划物料成本
- 【牛客 - 302哈尔滨理工大学软件与微电子学院第八届程序设计竞赛同步赛(低年级)】 小乐乐算数字(水题,快速幂,lowbit)
- 两点间最短路 java_AcWing 850. Dijkstra求最短路 II_Java实现含详细注释
- 感谢党,软考过了。系统集成项目管理project师
- iOS多线程编程的知识梳理
- [Ubuntu] 使用 ibus 输入汉字
- FleaPHP的单入口文件详解
- ma系列之-17-磁盘和文件系统1
- pyqt5——工具栏
- Ubuntu-Chrome 更新Flash插件
- windows生产力提升-装机必备
- wordpress友联_WordPress如何添加友情链接
- hdmi怎么支持2k分辨率_选择2K显示器有没有必要?
- 漫画:什么是Linux管道
- 数据结构与算法笔记:计算思维之经典农夫过河问题C++实现
- 如何做数据竞赛·优秀案例学习(DC03)
- 会计 制造费用转生产成本