DataGridView控件的使用总结

DataGridView控件的使用总结
DataGridView控件的使用总结

https://www.360docs.net/doc/286258497.html,/

DataGridView控件的使用V1.0

目录

一、属性应用 (2)

1.设置单元格鼠标点击后就进入编辑状态 (2)

2.设置DataGridView控件的行选择样式 (3)

3.当用户点击列标题时不进行排序 (3)

4.去除DataGridView自带的一行(带有*号的那一行,或者是不允许用户添加数据) (3)

5.设置单元格不可编辑 (3)

6.DataGridView判断新增行 (4)

7.DataGridView行删除操作的自定义 (4)

8.DataGridView行头和列头的隐藏 (4)

10.DataGridView行和列的删除 (5)

11.设置行或列为只读的 (5)

12.使窗体在屏幕中间显示 (5)

13.设置窗体不可改变大小 (5)

14.不显示DataGridView下面的新行 (6)

15.设置DataGridView控件中单元格的选中样式 (6)

16.设置DataGridView控件中是否可以进行多选 (6)

17.禁用点击列标题进行排序 (6)

18.DataGridView冻结列和行 (6)

二、事件应用 (7)

1.怎么样通过按钮事件给DataGridView控件添加一行空数据 (7)

2.判断鼠标点中的行是否可以进行编辑 (7)

3.用户点击某单元格进行编辑时,触发事件的顺序及使用 (8)

4.给新增行设置默认数据 (8)

5.当我们点击DataGridView控件的列标题时触发的事件解释 (9)

6.在DataGridView控件中编辑数据时检测输入数据的格式是否正确 (9)

7.将新插入的行插入到DataGridView中的第一行的方法 (10)

8.当用户点击Del(删除键)删除某一行时引发的事件 (10)

三、技巧应用 (10)

1.判断绑定到DataGridView中的数据是否被修改了 (10)

2.如何判断DataGridView中的新增行 (11)

3.设置DataGridView控件的各行变色 (11)

4.设置选中行的背景色 (11)

一、属性应用

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控件进行遍历,根据条件设置

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)行删除时的条件判断处理。

用户在删除行的时候,将会引发https://www.360docs.net/doc/286258497.html,erDeletingRow 事件。在这个事件里,可以判断条件并取消删除操作。

// 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 控件里面的数据行设置为只读,这时我们也可以根据我们自己程序的需要,设置要对哪些行设置只读,如下:

设置窗体的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这个属性,如下:

16.设置DataGridView控件中是否可以进行多选

在默认情况下,当我们按住Ctrl键时选中DataGridView中的数据行就可以进行多选,相关设置如下:

this.dgvFenxzgl.MultiSelect = true;//当设置为true时表示可以对数据行进行多选

17.禁用点击列标题进行排序

默认情况下,当我们点击DataGridView控件的列标题时会导致控件里面的数据进行重新排

冻结DataGridView的列和行,通过设置属性Frozen来进行控制。

1)冻结列

冻结列我们可以再设置器中进行设置,如下:

2)冻结行

冻结行的时候我们就需通过编程的方式实现,方法如下:

二、事件应用

1.怎么样通过按钮事件给DataGridView控件添加一行空数据

我们希望我们通过按钮事件给DataGridView控件添加一行空数据,当我们点击按钮时,在Click事件中填写代码,如下:

DataRow newrow =

((DataView)(this.dgvliucycx.DataSource)).Table.DataSet.Tables[0].Rows.Add();

//设置默认值

newrow["DENGJRQ"] = DateTime.Now.ToLongDateString();

newrow["YOUXRQ"] = DateTime.Now.ToLongDateString();

newrow["BIAOS"] = "存储";

通过返回创建的新行对象,我们还可以为新添加的行设置默认值。

2.判断鼠标点中的行是否可以进行编辑

当用户点击某单元格想要修改它的数据的时候,需要做一个判断看看用户是否可以进行修改,解决办法是:当用户点中某一行时,会触发DataGridView控件CellBeginEdit事件,在这个事件里面我们可以根据用户点击的该行的数据来判断用户是否可以更改该行的数据。如下:

上面显示的是效果图,需求是这样的,当某条记录的状态时废弃时用户就不能在对其进行编

辑,反之如果某条记录的状态是存储时,用户就可以对这条记录进行修改。实现:

//开始编辑单元格之前的判断

privatevoid dgvliucycx_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)

{

if (this.dgvliucycx.Rows[e.RowIndex].Cells["BIAOS"].Value.ToString().Equals("废弃"))

{

//取消对此单元格的编辑

e.Cancel = true;

return;

}

}

3.用户点击某单元格进行编辑时,触发事件的顺序及使用

首先触发的是CellBeginEdit事件----其次是CellParsing事件----再是CellEndEdit事件

CellBeginEdit事件:在触发该事件时单元格还没有获得焦点,我们可以通过设置事件参数e

来决定是否执行对单元格的编辑,如下:

privatevoid dataGridView1_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)

{

//执行编辑,这个一般不用写

e.Cancel = true;

//不执行编辑,这个一般是通过条件判断是否执行编辑,如果条件不成立,即不允许对单元格进行编辑

e.Cancel = false;

}

CellParsing事件:在该事件中我们可以对输入的文本进行格式化,如将输入的英文字母全部

改成大写等等,如下;

privatevoid dataGridView1_CellParsing(object sender, DataGridViewCellParsingEventArgs e)

{

/*

* 这里必须是通过e.Value来获得重新输入的值

* 如果是通过this.dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString()这种方法获得

* 那么获得值将是原来的值,并不是用户刚刚输入的值

* 这个也正可以对用户输入的数据进行验证,如果不符合则将原来的值再赋给该单元格,不进行修改

* 切记!!!!!

* 在这里必须将e.ParsingApplied属性设置为true,否则刚刚用户输入的值不会更新

* 还是会将原来的值赋给该单元格

* */

e.Value = e.Value.ToString().ToUpper();

e.ParsingApplied = true;

//MessageBox.Show(this.dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString());

}

CellEndEdit事件:触发该事件的时候,单元格已经失去焦点,可以获得更新后的值,如下:

privatevoid dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)

{

//MessageBox.Show("CellEndEdit");

if (this.dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString().Contains("我"))

{

MessageBox.Show("有我" + "..." + this.dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString()); }

}

4.给新增行设置默认数据

前面已经讲过怎么通过按钮事件给DataGridView添加一个新行,现在我们给添加的新行设

置默认值,如下:

privatevoid button1_Click(object sender, EventArgs e)

{

DataRow newrow =

((DataView)(this.dataGridView1.DataSource)).Table.DataSet.Tables[0].Rows.Add();

newrow["StuID"] = "admin";

newrow["Name"] = "admin";

}

5.当我们点击DataGridView控件的列标题时触发的事件解释

会触发控件的ColumnHeaderMouseClick事件和ColumnHeaderMouseClick事件,在这里我们可以控制绑定数据的变化,如:

6.在DataGridView控件中编辑数据时检测输入数据的格式是否正确

在默认情况下,当我们对DataGridView控件里面的数据进行编辑时,如果我们输入的数据格式与绑定的数据源的格式不正确,就会引发异常,并触发DataGridView控件的DataError 事件,在这个事件中通过事件参数e我们可以获得刚刚数据的数据,并且可以获得异常信息,同时我们也可以通过e.Cancel这个属性来决定是否取消事件的值。如下:

当我们在结果值这一栏中输入汉字时,就会引发异常,此时通过在DataError事件中我们就可以获取到该异常,将异常信息弹出,提示用户。方法如下:

//当输入的数据引发异常时执行的事件

privatevoid dgvFenxzgl_DataError(object sender, DataGridViewDataErrorEventArgs e)

{

KryptonMessageBox.Show(e.Exception.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);

e.Cancel = true;

}

7.将新插入的行插入到DataGridView中的第一行的方法

8.当用户点击Del(删除键)删除某一行时引发的事件

一般情况下我们不希望用户点击del删除键删除记录,这样可以设置DataGridView控件的

三、技巧应用

1.判断绑定到DataGridView中的数据是否被修改了

这里面绑定到DataGridView中数据源必须是DataTable或DataView,对于其他的数据源本方法未测试,在判断是否发生了改变的时候,我们需要将数据源取出,并强制转化为DataTable

2.如何判断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);

DataGridView的用法

在C# WinForm下做过项目的朋友都知道,其中的DataGridView控件默认只支持DataGridViewButtonColumn、DataGridViewCheckBoxColumn、DataGridViewComboBoxColumn、DataGridViewImageColumn、DataGridViewLinkColumn和DataGridViewTextBoxColumn六种列类型,如果你想要在DataGridView的列中添加其它的子控件,则需要自己实现DataGridViewColumn和DataGridViewCell,这就意味着你需要从现有的列中继承并改写一些方法,如实现一个支持单选按钮的列,或支持三种选择状态的多选按钮的列。 上面两个截图分别为RadioButton列和支持三种状态的CheckBox列在DataGridView中的实现效果,我是在Windows 2003中实现的,因此显示的效果跟在XP和Vista下有些区别,Vista下CheckBox的第三种状态(不确定状态)显示出来的效果是一个实心的蓝色方块。 下面我看具体来看看如何实现这两种效果。 要实现自定义的DataGridView列,你需要继承并改写两个类,一个是基于DataGridViewColumn的,一个是基于DataGridViewCell的,因为

RadionButton和CheckBox的实现原理类似,因此我们可以将这两种列采用同一种方法实现。创建DataGridViewDisableCheckBoxCell和DataGridViewDisableCheckBoxColumn两个类,分别继承自DataGridViewCheckBoxCell和DataGridViewCheckBoxColumn。代码如下: public class DataGridViewDisableCheckBoxCell: DataGridViewCheckBoxCell { public bool Enabled { get; set; } // Override the Clone method so that the Enabled property is copied. public override object Clone() { DataGridViewDisableCheckBoxCell cell = (DataGridViewDisableCheckBoxCell)base.Clone(); cell.Enabled = this.Enabled; return cell; } // By default, enable the CheckBox cell. public DataGridViewDisableCheckBoxCell() { this.Enabled = true; } // Three state checkbox column cell protected override void Paint(Graphics graphics, Rectangle clipBounds, Rectangle cellBounds, int rowIndex, DataGridViewElementStates elementState, object value, object formattedValue, string errorText, DataGridViewCellStyle cellStyle, DataGridViewAdvancedBorderStyle advancedBorderStyle, DataGridViewPaintParts paintParts) { // The checkBox cell is disabled, so paint the border, background, and disabled checkBox for the cell. if (!this.Enabled) { // Draw the cell background, if specified. if ((paintParts & DataGridViewPaintParts.Background) == DataGridViewPaintParts.Background) { SolidBrush cellBackground = new SolidBrush(cellStyle.BackColor); graphics.FillRectangle(cellBackground,

DataGridView控件用法合集

DataGridView控件用法合集 目录 DataGridView控件用法合集(一) 1. DataGridView当前的单元格属性取得、变更 2. DataGridView编辑属性 3. DataGridView最下面一列新追加行非表示 4. DataGridView判断当前选中行是否为新追加的行 5. DataGridView删除行可否设定 6. DataGridView行列不表示和删除 DataGridView控件用法合集(二) 7. DataGridView行列宽度高度设置为不能编辑 8. DataGridView行高列幅自动调整 9. DataGridView指定行列冻结 10. DataGridView列顺序变更可否设定 11. DataGridView行复数选择 12. DataGridView选择的行、列、单元格取得 DataGridView控件用法合集(三) 13. DataGridView指定单元格是否表示 14. DataGridView表头部单元格取得 15. DataGridView表头部单元格文字列设定 16. DataGridView选择的部分拷贝至剪贴板 17.DataGridView粘贴 18. DataGridView单元格上ToolTip表示设定(鼠标移动到相应单元格上时,弹出说明信息) DataGridView控件用法合集(四) 19. DataGridView中的ContextMenuStrip属性 20. DataGridView指定滚动框位置 21. DataGridView手动追加列 22. DataGridView全体分界线样式设置 23. DataGridView根据单元格属性更改显示内容 24. DataGridView新追加行的行高样式设置る 25. DataGridView新追加行单元格默认值设置 DataGridView中输入错误数据的处理(五) 26. DataGridView单元格数据错误标签表示 27. DataGridView单元格内输入值正确性判断 28. DataGridView单元格输入错误值事件的捕获 DataGridView控件用法合集(六) 29. DataGridView行排序(点击列表头自动排序的设置) 30. DataGridView自动行排序(新追加值也会自动排序) 31. DataGridView自动行排序禁止情况下的排序 32. DataGridView指定列指定排序 DataGridView控件用法合集(七) 33. DataGridView单元格样式设置 34. DataGridView文字表示位置的设定 35. DataGridView单元格内文字列换行 36. DataGridView单元格DBNull值表示的设定 37. DataGridView单元格样式格式化 38. DataGridView指定单元格颜色设定

datagridview在vbnet中的操作技巧.

DataGridView在https://www.360docs.net/doc/286258497.html,中的操作技巧目录: 1、取得或者修改当前单元格的内容 2、设定单元格只读 3、不显示最下面的新行 4、判断新增行 5、行的用户删除操作的自定义 6、行、列的隐藏和删除 7、禁止列或者行的Resize 8、列宽和行高以及列头的高度和行头的宽度的自动调整 9、冻结列或行 10、列顺序的调整 11、行头列头的单元格 12、剪切板的操作 13、单元格的ToolTip的设置 14、右键菜单(ContextMenuStrip的设置 15、单元格的边框、网格线样式的设定 16、单元格表示值的设定 17、用户输入时,单元格输入值的设定 18、设定新加行的默认值

1、DataGridView 取得或者修改当前单元格的内容: 当前单元格指的是DataGridView 焦点所在的单元格,它可以通过DataGridView 对象的CurrentCell 属性取得。如果当前单元格不存在的时候,返回Nothing(C#是null [https://www.360docs.net/doc/286258497.html,] ' 取得当前单元格内容MessageBox.Show(DataGridView1.CurrentCell.Value ' 取得当前单元格的列Index MessageBox.Show(DataGridView1.CurrentCell.ColumnIndex ' 取得当前单元格的行Index MessageBox.Show(DataGridView1.CurrentCell.RowIndex 另外,使用DataGridView.CurrentCellAddress 属性(而不是直接访问单元格来确定单元格所在的行:DataGridView.CurrentCellAddress.Y 和 列:DataGridView.CurrentCellAddress.X 。这对于避免取消共享行的共享非常有用。 当前的单元格可以通过设定DataGridView 对象的CurrentCell 来改变。可以通过CurrentCell 来设定 DataGridView 的激活单元格。将CurrentCell 设为Nothing(null 可以取消激活的单元格。[https://www.360docs.net/doc/286258497.html,] ' 设定(0, 0 为当前单元格 DataGridView1.CurrentCell = DataGridView1(0, 0 -------------------------------------------------------------------------------- 2、DataGridView 设定单元格只读:

DataGridView实现数据的快速输入

C#利用DataGridView实现数据的快速输入 网络编程2008-03-11 16:04:03 阅读313 评论0 字号:大中小订阅 在做管理软件时,常常需要表格输入功能。表格输入极大地加快了数据输入,提高了工作效率,当然也提高了软件的竞争性。笔者最近用C#在做一套CRM时,成功地使用C# 2005里面的表格控件DataGridView 实现了表格输入功能,现在就把具体实现与各位分享: 1. 初始化工作 (1) 在Vs 2005 里面新建一个C# WinForm 应用程序:DataGridViewTest (2) 在窗体Form1上拖一个DataGridView控件:DataGridView1 (3) 在DataGridView1里添加两个列: Column1: 类型:DataGridViewComboBoxColumn HeaderText:时间 DataPropertyName:DutyTime Column2: 类型:DataGridViewTextBoxColumn HeaderText:时间 DataPropertyName:DutyTime (4)在Form1类中添加两个私有属性: private DataTable m_Table;//输入组合框控件的下拉数据 private DataTable m_DataTable;//与表格绑定的DataTable,即用户输入的最终数据 (5)在Form1类里面定义一个结构体 public struct MyRowData { public MyRowData(int no, string enDay, string cnDay) { No = no; EnDay = enDay; CnDay = cnDay; } public int No; public string EnDay; public string CnDay; } (6) 在Form1的load事件Form1_Load(object sender, EventArgs e) 加上以下初始化代码: this.dataGridView1.AllowUserToAddRows = true; this.dataGridView1.AllowUserToDeleteRows = true; this.dataGridView1.AutoGenerateColumns = false;

C#中DatagridView单元格动态绑定控件

C#中DatagridView单元格动态绑定控件 C#中DatagridView单元格动态绑定控件 我们在使用DatagridView的列样式的时候很方便,可以设置成comboboxcolumn,textboxcolumn等等样式,使用起来非常方便,但是,这样设置的列都采用同一种样式.对同一列采用多种样式的,就需要单独对单元格进行操作了. 具体方法如下: 1.实例化一个定义好的控件:如combobox 2.初始化combobox 控件3.获取private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e) { if (dataGridView1.CurrentCell.ReadOnly == false && dataGridView1.CurrentCell.RowIndex == 2) // combobox显示条件 { comboBox1.Text = dataGridView1.CurrentCell.Value.ToString(); //对combobox 赋值R = dataGridView1.GetCellDisplayRectangle(dataGridView1.Curre ntCell.ColumnIndex, dataGridView1.CurrentCell.RowIndex, false); //获取单元格位置

comboBox1.SetBounds(R.X + dataGridView1.Location.X, R.Y + dataGridView1.Location.Y, R.Width, R.Height); //重新定位combobox.中间有坐标位置的转换 comboBox1.Visible = true; } else comboBox1.Visible = false; } 4.将combobox的值写回到单元格 private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { dataGridView1.CurrentCell.Value = comboBox1.Text; }

C#用DataGridview 做的表格效果

C#用DataGridview 做的表格效果 private void Form1_Load(object sender, EventArgs e) { DataGridViewComboBoxColumn boxc = new DataGridViewComboBoxColumn();//创建下拉框 boxc.HeaderText = "国家";//设定标题头 boxc.Items.Add("China");//设定下拉框内容 boxc.Items.Add("England"); boxc.Items.Add("U.S.A"); boxc.Items.Add("Japan"); this.dataGridView1.Columns.Add(boxc);//将下拉框添加到datagridview中 DataGridViewTextBoxColumn textc = new DataGridViewTextBoxColumn();//创建文本框字段 textc.HeaderText = "公司"; this.dataGridView1.Columns.Add(textc); textc = new DataGridViewTextBoxColumn(); textc.HeaderText = "描述"; this.dataGridView1.Columns.Add(textc); DataGridViewButtonColumn butc = new DataGridViewButtonColumn();//创建按钮字段 butc.HeaderText = "设置"; butc.Text = "设置"; butc.DefaultCellStyle.ForeColor = Color.Black; butc.DefaultCellStyle.BackColor = Color.FromKnownColor(KnownColor.ButtonFace); butc.AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells; butc.Width = 150; https://www.360docs.net/doc/286258497.html,eColumnTextForButtonValue = true;//如果为false,则不显示button上的text this.dataGridView1.Columns.Add(butc); butc = new DataGridViewButtonColumn(); butc.HeaderText = "删除"; butc.Text = "删除"; butc.DefaultCellStyle.ForeColor = Color.Black; butc.DefaultCellStyle.BackColor = Color.FromKnownColor(KnownColor.ButtonFace); butc.AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells; butc.Width = 150;

datagridview绑定数据源的几种常见方式

datagridview绑定数据源的几种常见方式datagridview绑定数据源的几种常见方式 //////////////开始以前,先认识一下WinForm控件数据绑定的两种形式,简单数据绑定和复杂数据绑定。 //////////////1)简单数据绑定 //////////////////using (SqlConnection conn = new SqlConnection(Config urationManager.ConnectionStrings["connStr"].ToString())) //////////////////{ ////////////////// SqlDataAdapter sda = new SqlDataAdapter("Select * Fr om T_Class Where F_Type='Product' order by F_RootID,F_Orders", conn); ////////////////// DataSet Ds = new DataSet(); ////////////////// sda.Fill(Ds, "T_Class"); ////////////////// //使用DataSet绑定时,必须同时指明DateMember ////////////////// //this.dataGridView1.DataSource = Ds; ////////////////// //this.dataGridView1.DataMember = "T_Class"; ////////////////// //也可以直接用DataTable来绑定 ////////////////// this.dataGridView1.DataSource = Ds.Tables["T_Class"]; //////////////////}

DataGridView中数据存入数据库方法

DataGridView做了新的数据显示控件加入到了.Net 05中,其强大的编辑能力让其成为了数据显示中必不可少的控件。目前对于DataGridView中的更新讲的挺多的,但直接的插入数据好像讲的不是太多,下面就以我的例子说明一下。 1、首先新建一个项目。 2、建立一个数据库连接类LinkDataBase。因为数据库操作有很多都是重复性工作,所以我们写一个类来简化对数据库的操作。 using System; using System.Collections.Generic; using System.Text; using System.Data; using System.Data.SqlClient; using System.Data.Sql; namespace Test ...{ class LinkDataBase ...{ //设置连接字符串 private string strSQL; //与数据库连接 private string connectionString = "Data Source=Localhost;Initial Catalog=Test;Integr ated Security=True"; private SqlConnection myConnection; private SqlCommandBuilder sqlCmdBld; private DataSet ds = new DataSet(); private SqlDataAdapter da; public LinkDataBase() ...{ } //根据输入的SQL语句检索数据库数据 public DataSet SelectDataBase(string tempStrSQL, string tempTableName) ...{ this.strSQL = tempStrSQL; this.myConnection = new SqlConnection(connectionString); this.da = new SqlDataAdapter(this.strSQL, this.myConnection); this.ds.Clear(); this.da.Fill(ds, tempStrSQL); //返回填充了数据的DataSet,其中数据表以tempTableName给出的字符串命名 return ds; } //数据库数据更新(传DataSet和DataTable的对象) public DataSet UpdateDataBase(DataSet changedDataSet, string tableName) ...{ this.myConnection = new SqlConnection(connectionString);

NET新手指南:轻松自定义DataGridView控件

.NET新手指南:轻松自定义DataGridView控件 .NET DataGridView是一个便于使用的数据绑定控件。本文为.NET新手介绍了如何使用.NET配置向导VB Express自定义DataGridView控件。只需非常简单的修改以及一两行代码,便可以轻松实现交替颜色行,自定义排序功能以及显示编辑行。这样一个既可以浏览数据又可以编辑数据的窗体非常实用。 本文的目标读者是.NET新手。首先讲述如何创建一个新连接,然后讲述如何自定义结果控件,使用Visual Basic Express(VB Express)配置向导,本文将描述如何填充DataGridView控件,然后按照以下步骤进行提高: 1、行的显示颜色交替,构成一个绿色条效果; 2、禁用掉DataGridView内置的单列排序功能; 3、执行这个窗体时显示编辑行。 开始 VB Express提供了许多方法检索和操作外部数据,例如,只需要运行VB Express的配置向导就可以建立一个到MS Access 示例数据库Northwind.mdb中Customers的连接: 1、启动VB Express,然后在标准工具栏上点击新建项目按钮,在弹出的对话框中选择Windows Form Application; 2、在名称控件处输入一个有意义的名字,点击确定按钮; 3、点击解决方案资源管理器右下角的数据源标签,如果没有看到这个标签,从“数据”菜单中选择显示数据源即可; 4、点击新建数据源按钮,启动新建数据源配置向导; 5、点击下一步,数据库选项保持默认设置; 6、在下一个面板中点击新建连接; 7、在弹出的新建连接对话框中,点击修改,从弹出的修改数据源对话框中选择Access数据库文件,然后点击确定按钮; 8、在新建连接对话框中点击浏览,找到Northwind.mdb的位置(在Office目录的Samples文件夹下),然后点击确定按钮; 9、点击测试连接,然后点击确定按钮清除确认消息; 10、如果连接工作正常,点击确定返回向导窗口,然后点击下一步继续;

DataGridView自定义列

Winform下DataGridView控件自定义列System.Windows.Forms.DataGridView控件是net下,数据显示使用最多的控件之一,但是Datagridviewk控件列类型却仅仅只有6中 分别是button 、checkbox、combobox、image、link、textbox 等6种常见类型。这很难满足我们日常开发需要。如果需要复杂的应用,要么找第三方控件,要么只能自己开发。而功能强大的第三方控件往往是需要付费的。但我们开发需要的很可能只是简单的功能,如果为了某个简单功能而专门购买一个控件对于个人来说有些得不偿失。 那么我们只剩下自己开发一途。幸运的是DataGridView控件容许我们进行二次开发,可以自定义我们需要的控件列。下图就是自定义日期输入自定义列,通过下面的例子,你完全可以开发出自己需要的功能列。下面给出https://www.360docs.net/doc/286258497.html,和C#代码和原理 自定义列必须自己写三个类,这三个类必须继承系统标准的类或实现系统标准接口。这三个类实际上代表gridview控件中的列、列中的单元格、以及单元格中的具体控件 分别继承自系统 1、DataGridViewColumn 代表表格中的列 2、DataGridViewTextBoxCell 代表列中的单元格 3、IDataGridViewEditingControl 接口,单元格控件可以几本可以继承自任何标准控件或者自定义控件,但是必须实现IDataGridViewEditingControl 下面给出vb和C#的详细案例代码

一、C# 代码 using System; using System.Windows.Forms; public class CalendarColumn : DataGridViewColumn { public CalendarColumn() : base(new CalendarCell()) { } public override DataGridViewCell CellTemplate { get { return base.CellTemplate; } set { // Ensure that the cell used for the template is a CalendarCell. if (value != null && !value.GetType().IsAssignableFrom(typeof(CalendarCell ))) { throw new InvalidCastException("Must be a CalendarCell"); } base.CellTemplate = value; } } } public class CalendarCell : DataGridViewTextBoxCell { public CalendarCell() : base() { // Use the short date format. this.Style.Format = "d"; }

dataGridView的用法

dataGridView的几个基本操作: 1、获得某个(指定的)单元格的值: dataGridView1.Row[i].Cells[j].Value; 2、获得选中的总行数: dataGridView1.SelectedRows.Count; 3、获得当前选中行的索引: dataGridView1.CurrentRow.Index; 4、获得当前选中单元格的值: dataGridView1.CurrentCell.Value; 5、取选中行的数据 string[] str = new string[dataGridView.Rows.Count]; for(int i;i

C# 实现Winform控件dataGridView的打印与分页

本文档是参考网上的资料,稍加修改,经过实际编译,可实现Winform上dataGridView控件的打印,并实现分页,下面为程序代码,仅供参考。本程序不需要在界面上添加任何打印相关控件。 public partial class Example : Form { //打印文檔 PrintDocument pdDocument = new PrintDocument(); //打印格式設置頁面 PageSetupDialog dlgPageSetup = new PageSetupDialog(); //打印頁面 PrintDialog dlgPrint = new PrintDialog(); //實例化打印預覽 PrintPreviewDialog dlgPrintPreview = new PrintPreviewDialog(); public Example() { InitializeComponent(); pdDocument.PrintPage += new PrintPageEventHandler(OnPrintPage); //頁面設置的打印文檔設置為需要打印的文檔 dlgPageSetup.Document = pdDocument; //打印界面的打印文檔設置為被打印文檔 dlgPrint.Document = pdDocument; //打印預覽的打印文檔設置為被打印文檔 dlgPrintPreview.Document = pdDocument; } ///

/// //顯示打印預覽界面,此处需要添加一个打印预览的按钮 /// /// /// private void btnPrintView_Click(object sender, EventArgs e) { dlgPrintPreview.ShowDialog(); }

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和所有单元格的行高自动调整

C#中DataGridView的使用

C#中DataGridView的使用 1.首先,连接数据库 Copy code public void Connect()  在C#中,使用DataGridView控件能很方便的显示从数据库中检索的数据. 1.首先,连接数据库 Copy code public void Connect() { string strConn = string.Format("Data Source = IP;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=DataBaseName;User ID = UserID;"); using (sqlConnection cnn = new SqlConnection(strConn)) { try { cnn.Open(); bConn = true; } catch (Exception exp) { MessageBox.Show(exp.Message); bConn = false; } } } 2.构造SQL语句去数据库查询,并奖结果放到DataGridView控件 Copy code string strSql = string.Format("select * from TableName where ID < 50 order by ID"); DataSet dataset = new DataSet(); SqlDataAdapter myDataAdapter = new SqlDataAdapter(strSql, cnn); myDataAdapter.Fill(dataset); //这句跟下面的顺序不能颠倒 dataGridView1.DataSource = dataset.Tables[0];//填充 3.添加DataGridView控件的右键菜单 Copy code //在CellMouseClick里操作 private void DataGridView_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e) { if (e.Button == MouseButtons.Right) { if (e.RowIndex >= 0)

dataGridView属性及方法

Dat aGridView 类 请稍候 DataGridV iew成员 开启低带宽视图 全部折叠 此页面仅适用于 .NET Framework 3.0 同时提供下列产品的其他版本: ?Microsoft Visual Studio 2005/.NET Framework 2.0?Microsoft Visual Studio 2008/.NET Framework 3.5 DataGridView 成员 在可自定义的网格中显示数据。 下表列出了由DataGridView类型公开的成员。 公共构造函数 页首 公共属性 (请参见受保护的属性) AccessibilityObject AccessibleDefaultActionDescription AccessibleDescription AccessibleName AccessibleRole AdjustedTopLeftHeaderBorderStyle

AdvancedCellBorderStyle AdvancedColumnHeadersBorderStyle AdvancedRowHeadersBorderStyle AllowDrop AllowUserToAddRows AllowUserToDeleteRows AllowUserToOrderColumns AllowUserToResizeColumns AllowUserToResizeRows AlternatingRowsDefaultCellStyle Anchor AutoGenerateColumns AutoScrollOffset AutoSize AutoSizeColumnsMode AutoSizeRowsMode BackColor

DataGridViewComboBoxColumn的使用

using System; using System.Collections.Generic; using https://www.360docs.net/doc/286258497.html,ponentModel; using System.Data; using System.Data.SqlClient; using System.Drawing; using System.Text; using System.Windows.Forms; namespace Sys { publicpartialclass Form3:Form { public Form3() { InitializeComponent();

} privatevoid Form3_Load(object sender,EventArgse) { dataGridView1.AllowUserToAddRows=false; dataGridView1.AutoGenerateColumns=false; using(SqlConnectionsqlconn=new SqlConnection("server=.;uid=sa;pwd=sa;database=xx")) { string sql1=@"selectuserid,fullname,a.[description],b.ugroupid fromusersaleftouterjoinusergroupb ona.grade=b.ugroupid"; string sql2="selectdistinctugroupid,[description]fromusergroup"; DataGridViewComboBoxColumndgvComboBoxColumn=dataGridView1.Columns["grade"]as DataGridViewComboBoxColumn; dgvComboBoxColumn.DataPropertyName="ugroupid"; dgvComboBoxColumn.DataSource=GetTable(sql2).DefaultView;//必须在设置dataGridView1的DataSource的属性前设置dgvComboBoxColumn.DisplayMember="description"; dgvComboBoxColumn.ValueMember="ugroupid"; dataGridView1.DataSource=GetTable(sql1).DefaultView;//一定要在dgvComboBoxColumn的DataSource后设置 } } private DataTableGetTable(string sql) { using(SqlConnectionsqlconn=new SqlConnection("server=.;uid=sa;pwd=yuling1310;database=smls")) { DataTabledt=new DataTable(); SqlDataAdaptersqlda=new SqlDataAdapter(sql,sqlconn); sqlda.Fill(dt); return dt; } } } }

相关文档
最新文档