微软C中DataGridView控件使用方法
dataGridView
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 = TrueDataGridView1.Rows[2].ReadOnly = TrueDataGridView1[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 = False4.判断当前选中行是否为新追加的行[C#]if (DataGridView1.CurrentRow.IsNewRow){Console.WriteLine("当前行,是新添加的行");}Else{Console.WriteLine("当前行,不是新添加的行");}5. DataGridView删除行可否设定[C#]DataGridView1.AllowUserToDeleteRows = False根据条件判断当前行是否要删除[C#]代码private void DataGridView1_UserDeletingRow(object sender, DataGridViewRowCancelEventArgs e){if (MessageBox.Show("确定要删除吗?", "删除确认", MessageBoxButtons.OKCancel, MessageBoxIcon.Question).Equals(System.Windows.Forms.DialogResult.OK)) {}else{e.Cancel = true;}}6. DataGrid View行列不表示和删除行列不表示[C#]'DataGridView1的第一列不表示DataGridView1.Columns[0].Visible = False'DataGridView1的第一行不表示DataGridView1.Rows[0].Visible = False行列表头部分不表示[C#]DataGridView1.ColumnHeadersVisible = FalseDataGridView1.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);}}<!--[endif]-->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#]'列幅最小值设定为100DataGridView1.Columns[0].MinimumWidth = 100'行高最小值设定为50DataGridView1.Rows[0].MinimumHeight = 50行列表头部分行高列幅设置为不能编辑[C#]行列表头部分行高设置为不能编辑DataGridView1.ColumnHeadersHeightSizeMode=DataGridViewColumnHeadersHeightSizeMode.DisableResizing行列表头部分列幅设置为能编辑DataGridView1.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.EnableResizing8. 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.DisplayedCells9. DataGridView指定行列冻结列冻结(当前列以及左侧做所有列)[C#]'DataGridView1的左侧2列固定DataGridView1.Columns[1].Frozen = True行冻结(当前行以及上部所有行)[C#]'DataGridView1的上部2行固定DataGridView1.Rows[2].Frozen = True指定单元格冻结(单元格所在行上部分所有行,列左侧所有列)[C#]DataGridView1[0, 0]. Frozen = True10. DataGridView列顺序变更可否设定[C#]'DataGridView1的列的位置设定为允许改变DataGridView1.AllowUserToOrderColumns = True但是如果列冻结的情况下,冻结的部分不能变更到非冻结的部分。
c# winform 关于datagridview一些操作
设置字段名设置字段值设定单元格表示 Error图标设定当前单元格取得当前单元格内容取得当前单元格的列 Index取得当前单元格的行 Index向下一行向上一行取消 DataGridView1 为只读设置 DataGridView1 为只读设置 DataGridView1 的第2列整列单元格为只读并变色设置 DataGridView1 的第3行整行单元格为只读并变色设置 DataGridView1 的[0,0]单元格为只读并变色设置 DataGridView1 的第2列整列单元格为只读并变色设置 DataGridView1 的第3行整行单元格为只读并变色设置 DataGridView1 的[0,0]单元格为只读并变色设置用户不能手动给 DataGridView1 添加新行设置用户可以手动给 DataGridView1 添加新行禁止DataGridView1的行删除操作。
允许DataGridView1的行删除操作。
DataGridView1的第一列隐藏DataGridView1的第一行隐藏DataGridView1的第一列显示DataGridView1的第一行显示列头隐藏行头隐藏列头显示行头显示删除名为"Column1"的列删除第四列删除第三行禁止用户改变DataGridView1的所有列的列宽禁止用户改变DataGridView1的所有行的行高允许用户改变DataGridView1的所有列的列宽允许用户改变DataGridView1的所有行的行高禁止用户改变DataGridView1的第一列的列宽禁止用户改变DataGridView1的第一列的行宽第一列的最小列宽设定为 100第一行的最小行高设定为 50禁止用户改变列头的高度禁止用户改变行头的宽度设定包括Header和所有单元格的列宽自动调整设定包括Header和所有单元格的行高自动调整第一列自动调整设定列头的宽度可以自动调整设定行头的宽度可以自动调整让 DataGridView1 的所有列宽自动调整一下。
dataGridView属性及方法
DataGridView 类请稍候DataGridView 成员开启低带宽视图全部折叠此页面仅适用于.NET Framework 3.0同时提供下列产品的其他版本:∙Microsoft Visual Studio 2005/.NET Framework 2.0∙Microsoft Visual Studio 2008/.NET Framework 3.5 DataGridView 成员在可自定义的网格中显示数据。
下表列出了由DataGridView类型公开的成员。
公共构造函数页首公共属性(请参见受保护的属性)页首受保护的属性页首公共方法(请参见受保护的方法)页首受保护的方法页首公共事件页首显式接口实现页首请参见参考DataGridView 类System.Windows.Forms 命名空间其他资源DataGridView 控件(Windows 窗体)DataGridView 控件概述(Windows 窗体)Windows 窗体DataGridView 控件中的基本格式设置和样式设置在Windows 窗体DataGridView 控件中显示数据Windows 窗体DataGridView 控件中的数据显示模式Windows 窗体DataGridView 控件和DataGrid 控件之间的区别标记: 添加标记社区内容添加新内容批注|个人信息中心 | 法律信息 | MSDN Flash 中心 | 联系我们© 2009 Microsoft Corporation 版权所有。
保留所有权利 | 商标 | 隐私权声明。
C# DataGridView控件使用全攻略
C# DataGridView控件使用完全攻略DataGridView是用于Windows Froms 2.0的新网格控件。
它可以取代先前版本中DataGrid控件,它易于使用并高度可定制,支持很多我们的用户需要的特性。
关于本文档:本文档不准备面面俱到地介绍DataGridView,而是着眼于深入地介绍一些技术点的高级特性。
本文档按逻辑分为5个章节,首先是结构和特性的概览,其次是内置的列/单元格类型的介绍,再次是数据操作相关的内容,然后是主要特性的综述,最后是最佳实践。
大部分章节含有一个“Q & A”部分,来回答该章节相关的一些常见问题。
注意,某些问题会由于知识点的关联性重复出现在多个章节。
这些问题、答案及其附带的示例代码都包含在本文档的附录部分。
注意:本文档的大部分内容来自MSDN中DataGridView控件的相关文档。
内容1何为DataGridView (4)1.1DataGridView和DataGrid 之间的区别 (4)1.2DataGridView的亮点 (4)2DataGridView的结构...................................................................................................错误!未定义书签。
2.1结构元素 (6)2.2单元格和组 (6)2.3DataGridView的单元格 (6)2.3.1DataGridViewCell的工作机制 (7)2.4DataGridView的列 (8)2.5DataGridView的编辑控件 (9)2.6DataGridView的行 (10)3列/单元格类型揭密 (11)3.1DataGridViewTextBoxColumn (11)3.2DataGridViewCheckBoxColumn (12)3.3DataGridViewImageColumn (12)3.4DataGridViewButtonColumn (12)3.5DataGridViewComboBoxColumn (13)3.5.1DataError与ComboBox列 (13)3.6DataGridViewLinkColumn (13)4操作数据 (15)4.1数据输入和验证的相关事件 (15)4.1.1数据验证相关事件的顺序 (15)4.1.2验证数据 (15)4.1.3在新行中的数据输入 (16)4.2关于Null值 (18)4.2.1NullValue属性 (19)4.2.2DataSourceNullValue属性 (19)4.3DataError事件 (19)4.4数据绑定模式 (20)4.4.1非绑定模式 (20)4.4.3虚拟模式 (21)4.4.4混合模式 (22)5Overview of features (23)5.1Styling (23)5.1.1The DataGridViewCellStyle Class (23)5.1.2Using DataGridViewCellStyle Objects (23)5.1.3Style Inheritance (24)5.1.4Setting Styles Dynamically (26)5.2Custom painting (27)5.2.1Paint Parts (27)5.2.2Row Pre Paint and Post Paint (28)5.3Autosizing (28)5.3.1Sizing Options in the Windows Forms DataGridView Control (29)5.3.2Resizing with the Mouse (30)5.3.3Automatic Sizing (31)5.3.4Programmatic Resizing (32)5.3.5Customizing Content-based Sizing Behavior (32)5.3.6Content-based Sizing Options (33)5.4Selection modes (33)5.4.1Programmatic Selection (34)5.5Scrolling (34)5.5.1Scroll event (34)5.5.2Scroll bars (34)5.5.3Scrolling Properties (34)5.6Sorting (35)5.6.1Programmatic Sorting (36)5.6.2Custom Sorting (37)5.7Border styles (37)5.7.1Standard Border Styles (38)5.7.2Advanced Border Styles (38)5.8Enter-Edit modes (39)5.9Clipboard copy modes (39)5.10Frozen columns/rows (40)5.11Implementing Custom cells and editing controls/cells (40)5.11.1IDataGridViewEditingControl (40)5.11.2IDataGridViewEditingCell (41)5.12Virtual mode (41)5.12.1Bound Mode and Virtual Mode (41)5.12.2Supplementing Bound Mode (41)5.12.3Replacing Bound Mode (41)5.12.4Virtual-Mode Events (42)5.12.5Best Practices in Virtual Mode (43)5.13Capacity (43)6Best Practices (44)6.1Using Cell Styles Efficiently (44)6.2Using Shortcut Menus Efficiently (44)6.3Using Automatic Resizing Efficiently (44)6.4Using the Selected Cells, Rows, and Columns Collections Efficiently (45)6.6Preventing Rows from Becoming Unshared (46)附录 A – 常见问题: (48)1.如何使指定的单元格不可编辑? (48)2.如何让一个单元格不可用? (48)3.如何避免用户将焦点设置到指定的单元格? (50)4.如何使所有单元格总是显示控件(不论它是否处于编辑状态)? (50)5.Why does the cell text show up with “square” characters where they should be new lines? (50)6.如何在单元格内同时显示图标和文本? (50)7.如何隐藏一列? (52)8.如何避免用户对列排序? (52)9.如何针对多个列排序? (52)10.如何为编辑控件添加事件处理函数? (57)11.应在何时移除编辑控件的事件处理函数? (57)12.如何处理ComboBox列中ComboBox控件的SelectIndexChanged事件? (57)13.如何通过拖放调整行的顺序? (58)14.如何调整最后一列的宽度使其占据网格的剩余客户区? (59)15.如何让TextBox类型的单元格支持换行? (59)16.如何使Image列不显示任何图像(字段值为null时)? (59)17.如何能够在ComboBox类型的单元格中输入数据? (60)18.How do I have a combo box column display a sub set of data based upon the value of a different combo box column? (60)19.如何在用户编辑控件的时候(而不是在验证时)就显示错误图标? (61)20.如何同时显示绑定数据和非绑定数据? (63)21.How do I show data that comes from two tables? (65)22.如何显示主从表? (65)23.如何在同一DataGridView中显示主从表? (67)24.如何避免用户对列排序? (67)25.如何在点击工具栏按钮的时候将数据提交到数据库? (67)26.如何在用户删除记录时显示确认对话框? (67)1 何为DataGridView通过DataGridView控件,可以显示和编辑表格式的数据,而这些数据可以取自多种不同类型的数据源。
微软C中DataGridView控件使用方法
DataGridView动态添加新行:DataGridView控件在实际应用中非常实用,特别需要表格显示数据时。
可以静态绑定数据源,这样就自动为DataGridView控件添加相应的行。
假如需要动态为DataGridView控件添加新行,方法有很多种,下面简单介绍如何为DataGridView控件动态添加新行的两种方法:方法一:int index=this.dataGridView1.Rows.Add();this.dataGridView1.Rows[index].Cells[0].Value = "1";this.dataGridView1.Rows[index].Cells[1].Value = "2";this.dataGridView1.Rows[index].Cells[2].Value = "监听";利用dataGridView1.Rows.Add()事件为DataGridView控件增加新的行,该函数返回添加新行的索引号,即新行的行号,然后可以通过该索引号操作该行的各个单元格,如dataGridView1.Rows[index].Cells[0].Value = "1"。
这是很常用也是很简单的方法。
方法二:DataGridViewRow row = new DataGridViewRow();DataGridViewTextBoxCell textboxcell = new DataGridViewTextBoxCell(); textboxcell.Value = "aaa";row.Cells.Add(textboxcell);DataGridViewComboBoxCell comboxcell = new DataGridViewComboBoxCell(); row.Cells.Add(comboxcell);dataGridView1.Rows.Add(row);方法二比方法一要复杂一些,但是在一些特殊场合非常实用,例如,要在新行中的某些单元格添加下拉框、按钮之类的控件时,该方法很有帮助。
WinForm(C#)DataGridView简单应用示例
WinForm(C#)DataGridView简单应⽤⽰例⼀个DataGridView简单应⽤⽰例,只是简单的实现了DataGridView的数据绑定、添加、修改和删除的操作,先看代码:view plaincopy to clipboardprint?using System;using System.Data;using System.Windows.Forms;namespace DataGridView{public partial class frmMain : Form{public frmMain(){InitializeComponent();}private DataSet addressList;private void frmMain_Load(object sender, EventArgs e){//从xml中加载数据addressList = new DataSet("AddressList");addressList.ReadXmlSchema(".\\AddressList.xsd");addressList.ReadXml(".\\AddressList.xml", XmlReadMode.Auto);addressList.Locale = System.Globalization.CultureInfo.CurrentUICulture;addressList.AcceptChanges();//绑定到datagridviewdataGridView1.AutoGenerateColumns = false;dataGridView1.DataSource = addressList;dataGridView1.DataMember = "UserList";}private void 新建NToolStripMenuItem_Click(object sender, EventArgs e){dataGridView1.CurrentCell = dataGridView1.Rows[dataGridView1.Rows.Count - 1].Cells["UserName"]; dataGridView1.BeginEdit(false);}private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e){if (e.RowIndex != 1 && !dataGridView1.Rows[e.RowIndex].IsNewRow){tsslUserName.Text = dataGridView1.Rows[e.RowIndex].Cells["UserName"].Value.ToString();}}private void 退出XToolStripMenuItem_Click(object sender, EventArgs e){this.Close();}private void dataGridView1_CellValidating(object sender, DataGridViewCellValidatingEventArgs e){//验证编辑的单元格的数据DataGridViewCell c = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex];switch (dataGridView1.Columns[e.ColumnIndex].Name){case "UserName":int UserNameMaxLength = addressList.Tables["UserList"].Columns["UserName"].MaxLength;if (e.FormattedValue.ToString().Length > UserNameMaxLength){string UserNameError = "⽤户名不能超过" + UserNameMaxLength.ToString() + "个字符";c.ErrorText = UserNameError;e.Cancel = false;}else if (e.FormattedValue.ToString().Length == 0)string UserNameError = "⽤户名不能为空";c.ErrorText = UserNameError;e.Cancel = false;}else{if (c.ErrorText != string.Empty){c.ErrorText = string.Empty;}}break;case "Telephone":int TelephoneMaxLength = addressList.Tables["UserList"].Columns["UserName"].MaxLength; if (e.FormattedValue.ToString().Length > TelephoneMaxLength){string TelephoneError = "电话号码不能超过" + TelephoneMaxLength.ToString() + "个字符";c.ErrorText = TelephoneError;e.Cancel = false;}else{if (c.ErrorText != string.Empty){c.ErrorText = string.Empty;}}break;case "QQ":int QQMaxLength = addressList.Tables["UserList"].Columns["QQ"].MaxLength;if (e.FormattedValue.ToString().Length > QQMaxLength){string QQError = "电话号码不能超过" + QQMaxLength.ToString() + "个字符";c.ErrorText = QQError;e.Cancel = false;}else{if (c.ErrorText != string.Empty){c.ErrorText = string.Empty;}}break;case "MSN":int MSNMaxLength = addressList.Tables["UserList"].Columns["MSN"].MaxLength;if (e.FormattedValue.ToString().Length > MSNMaxLength){string MSNError = "电话号码不能超过" + MSNMaxLength.ToString() + "个字符";c.ErrorText = MSNError;e.Cancel = false;}else{if (c.ErrorText != string.Empty){c.ErrorText = string.Empty;}}break;case "Address":int AddressMaxLength = addressList.Tables["UserList"].Columns["Address"].MaxLength;if (e.FormattedValue.ToString().Length > AddressMaxLength){string AddressError = "电话号码不能超过" + AddressMaxLength.ToString() + "个字符";c.ErrorText = AddressError;e.Cancel = false;else{if (c.ErrorText != string.Empty){c.ErrorText = string.Empty;}}break;case "Remark":int RemarkMaxLength = addressList.Tables["UserList"].Columns["Remark"].MaxLength; if (e.FormattedValue.ToString().Length > RemarkMaxLength){string RemarkError = "电话号码不能超过" + RemarkMaxLength.ToString() + "个字符";c.ErrorText = RemarkError;e.Cancel = false;。
datagridview控件用法
datagridview控件用法
1、将datagridview控件添加到From:添加DataGridView控件,双击界面上的DataGridView,根据实际情况在设计界面里调整控件大小,在属性框中设置DataGridView的数据源(DataSource)的值。
2、定义控件的列:右键DataGridView,选择“属性”,然后在弹出的对话框中,将“列集合”条目选中,点击“...”,此时可以定义你想要的列,设置列名、数据类型、宽度等信息。
3、绑定数据源:当定义好DataGridView的列后,为了显示该出来的具体的数据,可以将DataGridView与真实的数据源绑定,即可在DataGridView中显示具体数据,可以在设计时通过Visual Studio的Data Sources应用程序,或者在窗体上加载DataGridView控件时,通过代码来实现。
4、DataGridView添加行或者删除行:可以使用DataGridView的Rows属性来添加新行,或者通过使用RemoveAt(int index)方法来删除列中指定行。
5、DataGridView编辑功能及事件:默认情况下DataGridView中支持修改单元格数据,可以设置DataGridView的ReadOnly属性为false使其允许进行修改,并且DataGridView中TextBox派生的控件中的CellValidating事件、
CellValueChanged事件等都可以响应DataGridView的编辑功能,可以在这些事件中实现对数据的监测或者保存数据的操作。
datagridview 用法
datagridview 用法DataGridView是Windows Forms中的控件,是一种可以显示数据的表格控件。
常用的DataGridView属性和方法:1. 属性:DataSource:设置或获取数据源。
2. 属性:AutoGenerateColumns:设置或获取是否自动生成列。
3. 属性:RowHeadersVisible:设置或获取是否显示行标题。
4. 方法:Refresh:刷新DataGridView控件的显示。
常用的DataGridView事件:1. 事件:RowValidating:当行数据验证时发生。
2. 事件:CellClick:单击单元格时发生。
3. 事件:CellDoubleClick:双击单元格时发生。
4. 事件:SelectionChanged:当选择项发生更改时发生。
DataGridView的使用步骤:1. 创建DataGridView实例。
2. 设置DataSource属性。
3. 可选设置AutoGenerateColumns属性。
4. 可选设置RowHeadersVisible属性及其他属性。
5. 注册事件处理程序。
6. 添加DataGridView到窗体中。
下面是一个简单示例代码:C#代码:csharpdataGridView1.DataSource = dataTable; dataTable为绑定数据源dataGridView1.AutoGenerateColumns = true;dataGridView1.RowHeadersVisible = false;dataGridView1.CellClick += DataGridView_CellClick;注:DataGridView_CellClick是事件处理程序的方法名,需要自行定义。
DataGridView
[转载]c# WinForm开发 DataGridView各种操作总结大全(2011-08-27 21:20:03)转载▼标签:转载原文地址:c# WinForm开发 DataGridView各种操作总结大全作者:lilin0415一、单元格内容的操作//取得当前单元格内容Console.WriteLine(DataGridView1.CurrentCell.Value);// 取得当前单元格的列IndexConsole.WriteLine(DataGridView1.CurrentCell.ColumnIndex);// 取得当前单元格的行IndexConsole.WriteLine(DataGridView1.CurrentCell.RowIndex);复制代码另外,使用DataGridView.CurrentCellAddress 属性(而不是直接访问单元格)来确定单元格所在的行:DataGridView.CurrentCellAddress.Y 和列:DataGridView.CurrentCellAddress.X 。
这对于避免取消共享行的共享非常有用。
当前的单元格可以通过CurrentCell 来设定DataGridView 的激活单元格。
将CurrentCell 设为Nothing(null) 可以取消激活的单元格。
// 设定(0, 0) 为当前单元格DataGridView1.CurrentCell = DataGridView1[0, 0];复制代码在整行选中模式开启时,你也可以通过CurrentCell 来设定选定行。
/// <summary>/// 向下遍历/// </summary>/// <param ></param>/// <param ></param>private void button4_Click(object sender, EventArgs e){int row = this.dataGridView1.CurrentRow.Index + 1;if (row > this.dataGridView1.RowCount - 1)row = 0;this.dataGridView1.CurrentCell = this.dataGridView1[0, row];}/// <summary>/// 向上遍历/// </summary>/// <param ></param>/// <param ></param>private void button5_Click(object sender, EventArgs e){int row = this.dataGridView1.CurrentRow.Index - 1;if (row < 0)row = this.dataGridView1.RowCount - 1;this.dataGridView1.CurrentCell = this.dataGridView1[0, row];}复制代码* 注意: this.dataGridView 的索引器的参数是: columnIndex, rowIndex 或是columnName, rowIndex这与习惯不同。
操作DataGridView控件详解
在项目中,老程序员都知道显示数据的控件的操作灵活性很重要。
Visual Studio 2008里面提供了一个很强大的数据显示控件------------DataGridView。
DataGrid View与VB、VC中的DataGrid控件功能很相似,但比起更加强大,操作更灵活,废话不说了。
操作DataGridView有两种方式,一种是使用控件绑定的方式,操作的时候只要更改DataSet控件的数据集就能够实现DataGridView数据的灵活显示;另一种方式是全部使用代码来手工操作DataGridView控件的显示,尽量少用控件,使代码看起来更连贯,操作更灵活。
控件方法来操作DataGridView控件:(控件方法略,比较简单,拖控件,绑定即可)代码方法来操作DataGridView控件通过上两节,老程序员对数据的简单操作已经很熟练了。
现在在第一个实例“hello word!”的基础上,继续DataGridView控件的手工操作实习。
添加一个控件,文本命名如图:我们在上面看到的数据显示时这样的:列的头部是数据库表的列段名,因为我们是将SQL查询的数据集直接绑定到DataGridView控件的。
下来我们来改变它的头部,同时,来指定DataGridView控件各个列绑定的数据成员。
private void button4_Click(object sender, EventArgs e){//定义数据库连接字符string str_con = @"Data Source=26-3B72903E783B\SQLEXPRESS;Integrated Security=SS PI;Initial Catalog=testDB;";//定义SQL语句字符串string sql = "select * from danwei";// string sql = string.Format("insert into danwei (danwei) values ('{0}')", text Box1.Text);//定义并实例化数据库连接类型变量SqlConnection conn = new SqlConnection(str_con);//打开数据库连接conn.Open();SqlCommand comm = new SqlCommand(sql, conn);SqlDataAdapter da = new SqlDataAdapter(comm);DataSet ds = new DataSet();da.Fill(ds, "danwei");dataGridView1.DataSource = ds;dataGridView1.DataMember = "danwei";//---------------以上代码可以直接拷贝button3的代码--------------------//设置dataGridView1控件第一列的列头文字dataGridView1.Columns[0].HeaderText = "序号";//设置dataGridView1控件第一列的列宽dataGridView1.Columns[0].Width = 80;//设置dataGridView1控件第二列的列头文字dataGridView1.Columns[1].HeaderText = "单位";//设置dataGridView1控件第二列绑定的数据集中第一个数据表的第二列的数据//前面说了,ds数据集是一个多表的集合dataGridView1.Columns[1].DataPropertyName = ds.Tables[0].Columns[1].ToString();//设置dataGridView1控件第二列的列宽dataGridView1.Columns[1].Width = 300;conn.Close();}运行后,按下DataGridViewOpar按钮显示如下:比较原来的;发现就是列头变了,以及下面的滚动条长了,其实数据绑定了。
WinForm中DataGridView添加,删除,修改操作具体方法
WinForm中DataGridView添加,删除,修改操作具体⽅法1.添加操作,代码如下:复制代码代码如下:IList<SelfRun> selfRunConfigs = new List<SelfRun>();private void btnNewConfig_Click(object sender, EventArgs e){try{string _lampNo = UpDownSelfLampNo.Value.ToString();int _ctrlGpNo = Convert.ToInt16(UpDownCtrlGpCnt.Value);string _opWay = string.Format("{0}", rbConfig.Checked == true ? 1 : 0);string _opCtuch = GetSelectedCtuCh();if (CheckNewConfigIsLega(_ctrlGpNo, _opCtuch)){string _opType = rbCgOpen.Checked == true ? "01" : rbCgClose.Checked == true ? "00" : "02";selfRunConfigs.Add(new SelfRun(_opCtuch, _opType, Convert.ToInt32(UpDownTime.Value)));}BindGridViewForIList<SelfRun>(gcConfigShow, selfRunConfigs);}catch (Exception ex){MessageBox.Show(string.Format("新增配置失败,原因:{0}", ex.Message.Trim()));}}private void BindGridViewForIList<T>(DataGridView gv, IList<T> datasource){BindingList<T> _bindinglist = new BindingList<T>(datasource);BindingSource _source = new BindingSource(_bindinglist, null);gv.DataSource = _source;}SelfRun实体类代码如下:复制代码代码如下:public struct SelfRun{public SelfRun(string _opCtuCh, string _opWay, int _opTime): this(){OpCtuCh = _opCtuCh;OpWay = _opWay;OpTime = _opTime;}public string OpCtuCh{get;set;}public string OpWay { get; set; }public int OpTime { get; set; }}界⾯绑定,如图:效果如图:2.修改操作,代码如下:其实思路很简单,就是点击⾏的时候,获取⾏内数据信息,然后填充到控件内,修改后,点击‘修改配置'后即可保存修改。
DataGridView控件用法(可能不是很全面,因为这是自己常常用到的一些小总结):
DataGridView控件⽤法(可能不是很全⾯,因为这是⾃⼰常常⽤到的⼀些⼩总结):⼀、DataGridView属性设置1、我们单击选中⾏的时候,默认是选择⼀个单元格,不能选择⼀整⾏,我们只需设置DataGridView的属性SelectionMode为FullRowSelect 。
⽤代码表⽰:this.dataGridView1.SelectionMode =DataGridViewSelectionMode.FullRowSelect;2、选择多⾏,可设置DataGridView的属性MultiSelect为false 。
⽤代码表⽰:this.dataGridView1.MultiSelect = false;这样就使DataGridView不能够选择多⾏,只能选择⼀⾏了3、是否⾃动创列:dataGridView1.AutoGenerateColumns = false;4、DataGridView这个控件会默认的在第⼀⾏第⼀列选中。
这个问题我在⽹上看到了很多回答,也有很多⼈问。
可能是我⽤的⽅法不对,效果不是很好后来找到了这种答案: dataGridView1.ClearSelection();⼀⾏就可以。
5、设置标题样式&字体:⾸先把这个“EnableHeadersVisualStyles”属性设置为false。
在然后设置标题的样式,设置这个属性“ColumnHeadersDefaultCellStyle”:6、设置⾏的样式,设置DefaultCellStyle属性:1、单击项或双击⾏时,获取⾏的数据(CellClick)1private void DGV_CellClick(object sender, DataGridViewCellEventArgs e)2 {34if (e.RowIndex != -1)//判断是否点在⾏上5 {6 txt_No.Text = this.DGV["Col_No", e.RowIndex].Value.ToString();7 txt_Name.Text = this.DGV["Col_Name", e.RowIndex].Value.ToString();8 txt_Type.Text = this.DGV["Col_Type", e.RowIndex].Value.ToString();9 txt_Time.Text = this.DGV["Col_Time", e.RowIndex].Value.ToString();10 }11 }View Code“Col_No”。
winform datagridview控件用法
winform datagridview控件用法Winform DataGridView 控件用法详解一、简介Winform DataGridView 控件是 .NET Framework 中提供的一个强大的数据显示和编辑控件。
它可以显示和编辑多种类型的数据(如文本、数字、日期、图像等),并且提供了丰富的功能和灵活的样式设置,可以方便地实现数据的展示、排序、筛选、编辑、分页等操作。
二、绑定数据源1. 绑定数据集可以通过设置DataGridView 的DataSource 属性来绑定一个数据集(DataSet)或数据表(DataTable)。
在Visual Studio 的设计器中,通过选择数据源和数据成员来实现绑定,也可以通过代码实现。
例如:dataGridView1.DataSource = dataSet.Tables["TableName"];2. 绑定数据集合除了绑定数据集,还可以绑定数据集合(如List<T>、BindingList<T> 等)。
在数据集合发生变化时,DataGridView 会自动更新显示的数据。
例如:List<User> userList = new List<User>();dataGridView1.DataSource = userList;3. 动态绑定数据绑定数据源后,可以通过设置DataGridView 的AutoGenerateColumns 属性为true,自动根据数据源的结构创建列。
也可以通过手动添加列来控制显示的列数和顺序。
例如:dataGridView1.AutoGenerateColumns = true;三、设置列样式1. 自动调整列宽可以通过设置DataGridView 的AutoSizeColumnsMode 属性来调整列宽。
通常选择AllCells 或Fill,前者会根据列中的内容调整列宽,后者会填充整个控件。
datagridview控件用法
datagridview控件用法DataGridView控件是Windows Forms中最常用的控件之一,它可以用于显示和编辑数据。
在本文中,我们将介绍DataGridView控件的用法,包括如何绑定数据、设置列、样式和事件处理等。
1. 绑定数据DataGridView控件可以绑定各种数据源,包括DataTable、DataSet、BindingSource等。
绑定数据的方法有两种:一种是在设计时通过属性窗口设置,另一种是在运行时通过代码设置。
在设计时,我们可以通过以下步骤绑定数据:1)将DataGridView控件拖放到窗体上;2)在属性窗口中选择DataSource属性,然后选择要绑定的数据源;3)选择DataMember属性,然后选择要显示的数据表或数据集。
在运行时,我们可以通过以下代码绑定数据:dataGridView1.DataSource = dataTable;其中,dataTable是一个DataTable对象,它包含要显示的数据。
2. 设置列DataGridView控件可以显示多列数据,我们可以通过以下方法设置列:1)在设计时,通过列编辑器添加列;2)在运行时,通过代码添加列。
在设计时,我们可以通过以下步骤添加列:1)在属性窗口中选择Columns属性,然后点击“…”按钮;2)在列编辑器中添加列,设置列的属性,如HeaderText、DataPropertyName、Width等。
在运行时,我们可以通过以下代码添加列:DataGridViewTextBoxColumn column = new DataGridViewTextBoxColumn();column.HeaderText = "Column1";column.DataPropertyName = "Column1";column.Width = 100;dataGridView1.Columns.Add(column);其中,DataGridViewTextBoxColumn是一个列类型,它表示文本列。
winform datagridview 用法
winform datagridview 用法
WinForm中的DataGridView是一个非常强大的控件,它可以展示和编辑数据,还可以支持排序、筛选和分页等功能。
以下是DataGridView的使用方法:
1. 添加DataGridView控件到窗体中。
2. 设置DataGridView的数据源,可以是列表、数组或DataTable等。
3. 设计DataGridView的列,包括列的宽度、显示名称、数据类型等。
4. 配置DataGridView的显示属性,如是否允许排序、是否显示分页等。
5. 编写代码来填充和操作DataGridView的数据源,如添加、删除、编辑等。
6. 处理DataGridView的事件,如单元格点击、选中行改变等。
7. 为DataGridView添加自定义控件,如复选框、下拉框等。
8. 对DataGridView进行格式化,如日期格式化、货币格式化等。
9. 添加DataGridView的上下文菜单,为用户提供更多的操作选项。
以上是WinForm中DataGridView的基本用法,希望对大家有所帮助。
winform datagridviewtextboxcolumn 赋值
winform datagridviewtextboxcolumn 赋值(原创版)目录1.WinForm DataGridViewTextBoxColumn 控件简介2.实现 DataGridViewTextBoxColumn 控件的赋值方法3.示例代码及解析正文一、WinForm DataGridViewTextBoxColumn 控件简介在 WinForm 中,DataGridView 是一个常用的数据绑定控件,用于显示和编辑表格数据。
DataGridViewTextBoxColumn 是 DataGridView 中的一种列类型,用于在表格中显示和编辑文本数据。
二、实现 DataGridViewTextBoxColumn 控件的赋值方法要实现 DataGridViewTextBoxColumn 控件的赋值,可以通过以下方法:1.设计时赋值:在设计器中,选择 DataGridViewTextBoxColumn 控件,然后在属性窗口中设置相应的属性值。
2.编程时赋值:在代码中,通过 DataGridViewTextBoxColumn 控件的名称或者索引,设置相应的属性值。
三、示例代码及解析以下是一个简单的示例,展示如何为 DataGridViewTextBoxColumn 控件赋值:```csharpusing System;using System.Data;using System.Windows.Forms;amespace WinForm_DataGridViewTextBoxColumn_示例{public class Form1 : Form{private DataGridView dataGridView1;private DataGridViewTextBoxColumn textBoxColumn1;public Form1(){// 创建 DataGridView 控件dataGridView1 = new DataGridView();// 创建 DataGridViewTextBoxColumn 控件textBoxColumn1 = new DataGridViewTextBoxColumn();// 设置列名textBoxColumn1.HeaderText = "姓名";// 设置列宽度textBoxColumn1.Width = 100;// 将列添加到 DataGridView 中dataGridView1.Columns.Add(textBoxColumn1);// 将 DataGridView 控件添加到窗体中this.Controls.Add(dataGridView1);}}}```以上代码创建了一个简单的 DataGridView,其中包含一个DataGridViewTextBoxColumn 控件。
C#winfromDataGridView用法
C#winfromDataGridView⽤法DataGridView列的宽度⾃动调整,可以使⽤DataGridView.AutoSizeColumnsMode属性实现。
下⾯的代码就是列的宽度根据Header和所有单元格的内容⾃动调整的。
//根据Header和所有单元格的内容⾃动调整列的宽度 DataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;DataGridViewAutoSizeColumnsMode枚举的成员如下所⽰(是从MSDN「」引⽤的)。
DataGridViewAutoSizeColumnsMode成员名称说明AllCells列宽调整到适合列中所有单元格(包括标头单元格)的内容。
AllCellsExceptHeader列宽调整到适合列中除标头单元格以外所有单元格内容。
ColumnHeader列宽调整到适合列标头单元格的内容。
DisplayedCells列宽调整到适合位于屏幕上当前显⽰的⾏中的列的所有单元格(包括标头单元格)的内容。
DisplayedCellsExceptHeader列宽调整到适合位于屏幕上当前显⽰的列中的列的所有单元格(不包括标头单元格)的内容。
Fill 列宽调整到使所有列宽精确填充控件的显⽰区域,要求使⽤⽔平滚动的⽬的只是保持列宽⼤于DataGridViewColumn.MinimumWidth属性的值。
相对列宽由相对DataGridViewColumn.FillWeight属性值决定。
None列宽不会⾃动调整。
⾏⾼的⾃动调整DataGridView⾏的⾼度⾃动调整,可以使⽤DataGridView1.AutoSizeRowsMode属性实现。
[C#]//根据Header和所有单元格的内容⾃动调整⾏的⾼度 DataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells; DataGridViewAutoSizeRowsMode枚举的成员如下所⽰(是从MSDN「」引⽤的)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
DataGridView动态添加新行:DataGridView控件在实际应用中非常实用,特别需要表格显示数据时。
可以静态绑定数据源,这样就自动为DataGridView控件添加相应的行。
假如需要动态为DataGridView控件添加新行,方法有很多种,下面简单介绍如何为DataGridView控件动态添加新行的两种方法:方法一:int index=this.dataGridView1.Rows.Add();this.dataGridView1.Rows[index].Cells[0].Value = "1";this.dataGridView1.Rows[index].Cells[1].Value = "2";this.dataGridView1.Rows[index].Cells[2].Value = "监听";利用dataGridView1.Rows.Add()事件为DataGridView控件增加新的行,该函数返回添加新行的索引号,即新行的行号,然后可以通过该索引号操作该行的各个单元格,如dataGridView1.Rows[index].Cells[0].Value = "1"。
这是很常用也是很简单的方法。
方法二:DataGridViewRow row = new DataGridViewRow();DataGridViewTextBoxCell textboxcell = new DataGridViewTextBoxCell(); textboxcell.Value = "aaa";row.Cells.Add(textboxcell);DataGridViewComboBoxCell comboxcell = new DataGridViewComboBoxCell(); row.Cells.Add(comboxcell);dataGridView1.Rows.Add(row);方法二比方法一要复杂一些,但是在一些特殊场合非常实用,例如,要在新行中的某些单元格添加下拉框、按钮之类的控件时,该方法很有帮助。
DataGridViewRow row = new DataGridViewRow();是创建DataGridView的行对象,DataGridViewTextBoxCell 是单元格的内容是个TextBox,DataGridViewComboBoxCell是单元格的内容是下拉列表框,同理可知,DataGridViewButtonCell是单元格的内容是个按钮,等等。
textboxcell是新创建的单元格的对象,可以为该对象添加其属性。
然后通过row.Cells.Add(textboxcell)为row对象添加textboxcell单元格。
要添加其他的单元格,用同样的方法即可。
最后通过dataGridView1.Rows.Add(row)为dataGridView1控件添加新的行row。
DataGridView取得或者修改当前单元格的内容:当前单元格指的是 DataGridView 焦点所在的单元格,它可以通过 DataGridView 对象的 CurrentCell 属性取得。
如果当前单元格不存在的时候,返回Nothing(C#是null)// 取得当前单元格内容Console.WriteLine(DataGridView1.CurrentCell.Value);// 取得当前单元格的列 IndexConsole.WriteLine(DataGridView1.CurrentCell.ColumnIndex);// 取得当前单元格的行 IndexConsole.WriteLine(DataGridView1.CurrentCell.RowIndex);另外,使用 DataGridView.CurrentCellAddress 属性(而不是直接访问单元格)来确定单元格所在的行: DataGridView.CurrentCellAddress.Y列:DataGridView.CurrentCellAddress.X 。
这对于避免取消共享行的共享非常有用。
当前的单元格可以通过设定 DataGridView 对象的 CurrentCell 来改变。
可以通过CurrentCell 来设定DataGridView 的激活单元格。
将 CurrentCell 设为Nothing(null) 可以取消激活的单元格。
// 设定 (0, 0) 为当前单元格DataGridView1.CurrentCell = DataGridView1[0, 0];在整行选中模式开启时,你也可以通过 CurrentCell 来设定选定行。
/// 向下遍历private void button4_Click(object sender, EventArgs e)...{int row = this.dataGridView1.CurrentRow.Index + 1;if (row > this.dataGridView1.RowCount - 1)row = 0;this.dataGridView1.CurrentCell = this.dataGridView1[0, row];}/// 向上遍历private void button5_Click(object sender, EventArgs e)...{int row = this.dataGridView1.CurrentRow.Index - 1;if (row < 0)row = this.dataGridView1.RowCount - 1;this.dataGridView1.CurrentCell = this.dataGridView1[0, row];}* 注意: this.dataGridView 的索引器的参数是: columnIndex, rowIndex 或是columnName, rowIndex这与习惯不同。
DataGridView设定单元格只读:1)使用 ReadOnly 属性如果希望,DataGridView 内所有单元格都不可编辑,那么只要:// 设置 DataGridView1 为只读DataGridView1.ReadOnly = true;此时,用户的新增行操作和删除行操作也被屏蔽了。
如果希望,DataGridView 内某个单元格不可编辑,那么只要:// 设置 DataGridView1 的第2列整列单元格为只读DataGridView1.Columns[1].ReadOnly = true;// 设置 DataGridView1 的第3行整行单元格为只读DataGridView1.Rows[2].ReadOnly = true;// 设置 DataGridView1 的[0,0]单元格为只读DataGridView1[0, 0].ReadOnly = true;2)使用 EditMode 属性DataGridView.EditMode 属性被设置为DataGridViewEditMode.EditProgrammatically 时,用户就不能手动编辑单元格的内容了。
但是可以通过程序,调用 DataGridView.BeginEdit 方法,使单元格进入编辑模式进行编辑。
DataGridView1.EditMode = DataGridViewEditMode.EditProgrammatically;3)根据条件设定单元格的不可编辑状态当一个一个的通过单元格坐标设定单元格 ReadOnly 属性的方法太麻烦的时候,你可以通过 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;}}DataGridView不显示最下面的新行:通常 DataGridView 的最下面一行是用户新追加的行(行头显示 * )。
如果不想让用户新追加行即不想显示该新行,可以将 DataGridView 对象的 AllowUserToAddRows 属性设置为 False。
// 设置用户不能手动给 DataGridView1 添加新行DataGridView1.AllowUserToAddRows = false;但是,可以通过程序: DataGridViewRowCollection.Add 为 DataGridView 追加新行。
补足:如果 DataGridView 的 DataSource 绑定的是 DataView, 还可以通过设置DataView.AllowAdd属性为 False 来达到同样的效果。
DataGridView判断新增行:DataGridView 的AllowUserToAddRows属性为True时也就是允许用户追加新行的场合下,DataGridView的最后一行就是新追加的行(*行)。
使用 DataGridViewRow.IsNewRow 属性可以判断哪一行是新追加的行。
另外,通过DataGridView.NewRowIndex 可以获取新行的行序列号.在没有新行的时候,NewRowIndex = -1。
DataGridView行的用户删除操作的自定义:1)无条件的限制行删除操作。
默认时,DataGridView 是允许用户进行行的删除操作的。
如果设置 DataGridView对象的AllowUserToDeleteRows属性为 False 时,用户的行删除操作就被禁止了。
// 禁止DataGridView1的行删除操作。
DataGridView1.AllowUserToDeleteRows = false;但是,通过 DataGridViewRowCollection.Remove 还是可以进行行的删除。
补足:如果 DataGridView 绑定的是 DataView 的话,通过 DataView.AllowDelete 也可以控制行的删除。