C#DataGridView控件60招(一)

摘要:
C#----DataGridView控件60招(一)1.DataGridView当前的单元格属性取得、变更2.DataGridView编辑属性3.DataGridView最下面一列新追加行非表示4.DataGridView判断当前选中行是否为新追加的行5.DataGridView删除行可否设定6.DataGridView行列不表示和删除1.当前的单元格属性取得、变更[C#]'当前选中单元的值Con

C#----DataGridView控件60招(一)

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#]


C#DataGridView控件60招(一)第1张C#DataGridView控件60招(一)第2张代码
privatevoidDataGridView1_CellBeginEdit(objectsender,DataGridViewCellCancelEventArgse)
{
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#]


C#DataGridView控件60招(一)第3张C#DataGridView控件60招(一)第4张代码
privatevoidDataGridView1_UserDeletingRow(objectsender,DataGridViewRowCancelEventArgse)
{
if(MessageBox.Show("确定要删除吗?","删除确认",MessageBoxButtons.OKCancel,MessageBoxIcon.Question).Equals(System.Windows.Forms.DialogResult.OK))
{
}
else
{
e.Cancel
=true;
}
}

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);
}
}

C#----DataGridView控件60招(二)

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(DataGridViewCellc inDataGridView1.SelectedCells)

{

Console.WriteLine(c.ColumnIndex + ","+ c.RowIndex);

}

'输出选择的行位置

Console.WriteLine("选择的行位置")

foreach(DataGridViewRowr indgvBeforeStep.SelectedRows)

{

Console.WriteLine(r.Index);

}

''输出选择的列位置

foreach(DataGridViewColumncol indgvBeforeStep.SelectedColumns)

{

Console.WriteLine(col.Index);

}

指定行、列、单元格取得

[C#]

'(0, 0)的选中

DataGridView1[0, 0].Selected = True

'Index1的行选中

DataGridView1.Rows[1].Selected = True

'Index2的列选中

DataGridView1.Columns[2].Selected = True

C#----DataGridView控件60招(三)

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(inti=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#]

C#DataGridView控件60招(一)第5张C#DataGridView控件60招(一)第6张代码
if(DataGridView1.CurrentCell.Value==null)
{
return;
}
intinsertRowIndex=DataGridView1.CurrentCell.RowIndex;
stringpasteText=Clipboard.GetText();
if(string.IsNullOrEmpty(pasteText))
{
return;
}
string[]lines=pasteText.Split('\r');
boolisHeader=true;
foreach(stringlineinlines)
{
if(isHeader)
{
isHeader
=false;
}
else
{
string[]vals=line.Split('\t');
if(vals.Length-1!=DataGridView1.ColumnCount)
{
thrownewApplicationException("列数错误");
}
DataGridViewRowrow
=DataGridView1.Rows[insertRowIndex];
row.HeaderCell.Value
=vals[0];
for(inti=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事件


privatevoidDataGridView1_CellToolTipTextNeeded(objectsender,DataGridViewCellToolTipTextNeededEventArgse)
{
e.ToolTipText
=e.RowIndex.ToString()+","+e.ColumnIndex.ToString();
}

C#----DataGridView控件60招(四)

DataGridView控件用法合集()

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

也可以用CellContextMenuStripNeededRowContextMenuStripNeeded属性进行定义

[C#]


1privatevoidDataGridView1_CellContextMenuStripNeeded(objectsender,DataGridViewCellContextMenuStripNeededEventArgse)
2{
3if(e.RowIndex<0)
4{
5e.ContextMenuStrip=this.contextMenuStrip1;
6}
7elseif(e.ColumnIndex<0)
8{
9e.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"))
{
stringstr=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#]


privatevoidDataGridView1_DefaultValuesNeeded(objectsender,DataGridViewRowEventArgse)
{
e.Row.Cells[
"Column1"].Value=0;
e.Row.Cells[
"Column2"].Value="-";
}

免责声明:文章转载自《C#DataGridView控件60招(一)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇vue自定义指令input获取焦点,及不生效解决办法 JimJava/Android倒计时(开始,暂停,恢复,停止)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

【解决】Failed to restart network.service: Unit network.service not found.

分析:原因其实也很简单,命令用错了,造成了找不到相应的网卡服务。...

微信扫码网页登录,redirect_uri参数错误解决方法

对于微信开放平台[管理中心/应用程序详细信息]中设置的[开发信息][授权回调域],只需填写域名,无需https://,也无需特定页面。您不需要填写完整的请求路径,如图所示:https://open.weixin.qq.com/connect/qrconnect?appid=您的APPID&direct_Uri=回调和响应的特定地址_type=code...

django的优缺点(非原创)

Django做了很多。使用它快速开发一些Web应用程序是很好的。因此,在一些人眼中,Django只不过是一种灵丹妙药,但对一些人来说,它也是一种毒药和剧毒。Django开发人员也讨论并试图支持SQLAlchemy,但最终放弃了。据估计,成本太高,很难与Django的其他模块集成。尽管Django的ORM不如SQLAlchemy强大,但它并不弱。Django的...

EwoMail 开源邮件服务器安装教程

本教程示例中使用的主要域名是ewomail.cn。设置主机名EwoMail将在安装后默认使用带有域名前缀mail的主机名。例如,mail.ewomail。cn将系统主机名更改为mail.ewomail.cn。查看当前主机名hostname-f修改主机名,修改文件/etc/sysconfig/network修改文件/etc/hosts,添加mail.ewoma...

如何更改SQL Server2008默认数据库的存储路径

1.在安装SQlServer时,修改路径:当然,也可以修改共享函数目录和实例根目录。但是,我不知道共享函数目录和实例根目录是什么。...

MongoDB用户与角色管理

MongoDB默认不启用访问控制。管理员可以在配置文件授权参数中使用--auth-in restart或security来启用访问控制。(4) MongoDB在每个数据库上提供内置的DatabaseUserRoles和DatabaseAdministrationRoles。MongoDB仅为管理数据库提供所有内置角色。此角色没有用户和角色管理权限。(4.4)...