Winform datagridview使用技巧

声明:因为本文章是自己在开发过程中整理的资料,转载请注明出处

 

1、Winform 获取datagridview选中行的某列数据

for (int i = 0; i < dtGrdCurcy.SelectedRows.Count; i++)
            {
                string LSTR_Cunumber = dtGrdCurcy.SelectedRows[i].Cells["CuNumber1"].Value.ToString();
                //MessageBox.Show(LSTR_Cunumber);
            }

 

2、不允许用户通过鼠标拖拽改变窗体大小,原理是最大值和最小值相等

private void InitCurntForm()
        {
            dtGrdUnit.DataSource = MoUnit.GetUnit(Ocode, SessionDB, LogID);
            MaximumSize = new Size(589, 405); MinimumSize = new Size(589, 405); //不允许用户通过鼠标拖拽改变窗体大小,原理是最大值和最小值相等
        }

 

3、调整列宽模式

AutoSizeColumnsMode属性

AutoSizeColumnsMode:Fill    让所有列宽铺满整个表格

 

4、允许选择多个单元格、行或列

MultiSelect

 

5、设置选择一个单元格,可以让整行处于选中状态

SelectionMode  : FullRowSelect

 

6、改变某行背景色

dtGrdUnit.Rows[1].DefaultCellStyle.BackColor = Color.SkyBlue;

 

7、datatable排序

http://www.7es.cn/Software_development/129.shtml

 

8、网上发现的datagridview     http://www.360doc.com/content/11/0510/17/3705007_115751993.shtml

 

9、从多列的DataTable里取需要的几列  http://www.cnblogs.com/tinsea/articles/2294216.html

 

10、 WinForm使     http://wenku.baidu.com/view/3e7b572d0066f5335a8121a0.html

 

11、Visual C# 2008使件  http://wenku.baidu.com/view/140595eb19e8b8f67c1cb986.html?from=rec&pos=3&weight=6&lastweight=6&count=5

 

12、http://cache.baidu.com/c?m=9f65cb4a8c8507ed4fece763104c8c711923d030678197027fa3c215cc790d061221a8e87b211005d5c2787a51f11409f7ab7025681e73e491cedb48deb1c57f258e2567741bd01142d549f99f4232c157ca1cb6f10da2e7b0649ceb898f8b09139544050bc6abd40d4003ca1ea74862b3f8ce1e025e60ad9c43728b5f605f9d3436b0&p=9a759a41dc9818ed07be9b7b154e&user=baidu&fm=sc&query=winform+timer+enabled%CA%F4%D0%D4&qid=ede661042231d40b&p1=3

 

13、 异步  http://blog.csdn.net/qinzhiyang1212/article/details/3583246

 

14、 http://blog.csdn.net/kafanqd/article/details/4917970

 

15、e.handled=true 什么意思?什么时候用?  

是不处理的意思。意思是说这个事件已经处理过了,现在不用处理了。

 

 16、

Winform DataGrid自动验证输入内容为非数字!

http://blog.csdn.net/shengyongwang/article/details/4604705

 

17、 dataGridView空白列就是指dataGridView每一行的头上都会有一个行头,不能绑定数据也不能进行什么操作。不知道大家有没有对此头疼过,我以前都是忽略不管,到后来才发现dataGridView属性面板中有一个设置行头是否显示的属性RowHeadersVisible,将其值设置为false就可以了.

18、 dataGridView默认选中行的背景色是那种蓝色的,看上去很难看不说了,并且dataGridView数据绑定后,默认第一行背景色为蓝色,但第一行并未被选中,针对此情况我是这样解决的,在行中加了一个DataGridViewCheckBoxColumn列,行的选中与否全靠DataGridViewCheckBoxColumn列是否勾选来定,这个下面将要说到,现在先说选中行背景色的问题,点击dataGridView的属性RowDefaultCellStyle右边的按钮,打开CellStyle生成器,将SelectionBackColor改为您要用的背景色就可以了.注意不要把SelectionBackColor和SelectionForeColor设置为同一值,呵呵,会产生颜色覆盖的

19,     dataGridView中加入复选框的方法就是指定一列的ColumnType的值为DataGridViewCheckBoxColumn,只要您添加过列就不会陌生,但为了改变其勾选状态,确费了我半天劲,现在问题解决了,回头一看,怎能用一简单二字来形容,

 

private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {//点击一行的任意单元格的内容时发生
            if (dataGridView1.Columns[e.ColumnIndex].Name == "Column0")
            {
                DataGridViewCheckBoxCell dgcb = (DataGridViewCheckBoxCell)dataGridView1.Rows[e.RowIndex].Cells["Column0"];
                if ((bool)dgcb.FormattedValue)
                {
                    dgcb.Value = false;
                }
                else
                {
                    dgcb.Value = true;
                }
            }
        }

 

20、使用颜色代码修改背景色

dtGrdUnit.Rows[1].DefaultCellStyle.BackColor= System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(156)))), ((int)(((byte)(192)))));

 

21、DataGridView控件使用大全  http://kb.cnblogs.com/a/2018504/

 

22、winform 如何使控件随着窗体的大小改变而改变

以button1空间为例,给它的Anchor这个属性赋值不同的值就可以实现空间跟随窗体改变大小以下是源代码,

this.button1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)

                        | System.Windows.Forms.AnchorStyles.Left)

                        | System.Windows.Forms.AnchorStyles.Right)));

以下是在属性面板中设置

 

设置datagridview,除了将Anchor属性改成Top, Bottom, Left, Right之外,还需要设置AutoSizeColumnsMode属性为Fill

 

23、datagridview在绑定的前提下,将第二列单元格颜色改成数据存储的颜色
    for (int i = 0; i < dataGridView1.Rows.Count; i++)
            {
                dataGridView1.Rows[i].Cells[0].Style.BackColor = Color.FromName(dataGridView1.Rows[i].Cells[1].Value.ToString());
            }

 

24、Windows 窗体 DataGridView 控件中的大小调整选项

转载自:http://technet.microsoft.com/zh-cn/74b2wakt(es-es).aspx

在发生很多不同情况时,可以导致 DataGridView 行、列和标题更改大小。 下表显示了这些情况。

情况

说明

用户调整大小

用户可以通过拖动或双击行、列或标题分隔符来调整大小。

控件调整大小

在列填充模式中,如果控件宽度发生更改,则列宽度将更改;例如,当控件停靠在它的父窗体上和用户调整窗体大小时。

单元格值更改

在基于内容的自动调整大小模式中,大小将为了容纳新的显示值而发生更改。

方法调用

通过编程实现的基于内容的调整大小允许您在发生方法调用时基于单元格值进行随机的大小调整。

属性设置

还可以设置特定的高度和宽度值。

默认情况下,将启用用户调整大小、禁用自动调整大小并减小宽度大于其列的单元格值。

通过使用下表中显示的方案,可以调整默认行为,或使用特定的调整大小选项来获得特定的效果。

方案

实现

使用列填充模式在占据控件的整个宽度并且个数相对较少的列中显示相似的调整大小数据,而不显示水平滚动条。

AutoSizeColumnsMode 属性设置为Fill

对大小变化的显示值使用列填充模式。

AutoSizeColumnsMode 属性设置为Fill 在用数据填充控件之后,通过设置列FillWeight 的属性或调用控件的AutoResizeColumns 方法来初始化相对的列宽度。

对重要性变化的值使用列填充模式。

AutoSizeColumnsMode 属性设置为Fill 对必须始终显示其某些数据的列设置大型MinimumWidth 值,或对特定列使用填充模式以外的调整大小选项。

使用列填充模式以避免显示控件背景。

将最后一列的 AutoSizeMode 属性设置为Fill,并对其他列使用其他调整大小选项。 如果其他列使用了过多的可用空间,可设置最后一列的MinimumWidth 属性。

显示固定宽度的列,例如,图标或 ID 列。

将该列的 AutoSizeMode 设置为None,并将Resizable 设置为False 用数据填充控件之后,通过设置Width 属性或调用控件的AutoResizeColumn 方法来初始化它的宽度。

一旦单元格内容发生更改,则自动调整大小,以避免发生裁减,并优化空间的使用。

将自动调整大小属性设置为可表示基于内容的调整大小模式的值。 若要避免在处理大量数据时性能有损失,请使用只计算所显示的行的调整大小模式。

调整大小以容纳显示行中的值,以避免在处理很多行时性能有损失。

对于自动或编程的调整大小,使用相应的调整大小模式枚举值。 若要调整大小以便在滚动时容纳新显示的行中的值,请在Scroll 事件处理程序中调用调整大小方法。 若要自定义用户双击时的调整大小,以便仅由显示行中的值来确定新的大小,请在RowDividerDoubleClickColumnDividerDoubleClick 事件处理程序中调用调整大小方法。

仅在特定时间调整大小以容纳单元格内容,以避免性能有损失,或启用用户调整大小。

在事件处理程序中调用基于内容的调整大小方法。 例如,使用 DataBindingComplete 事件可以在绑定后初始化大小,并通过处理CellValidatedCellValueChanged 事件以调整大小,从而补偿绑定的数据源中的用户编辑或更改。

调整多行单元格内容的行高。

确保列宽对于显示文本段落是合适的,并使用自动或编程的基于内容的行调整大小来调整高度。 还要确保使用WrapMode 单元格样式值True 来显示包含多行内容的单元格。

通常,将使用自动列调整大小模式来维护列宽,或在调整行高之前将它们设置为特定的宽度。

用鼠标调整大小

默认情况下,对于不使用基于单元格值的自动调整大小模式的行、列和标题来说,可以由用户调整它们的大小。 若要防止用户用其他模式(例如,列填充模式)调整大小,请设置一个或多个下面的DataGridView 属性:

还可以通过设置其 Resizable 属性来防止用户调整单个行或列的大小。 默认情况下,Resizable 属性值基于列的 AllowUserToResizeColumns 属性值和行的AllowUserToResizeRows 属性值。 但是,如果显式地将Resizable 设置为TrueFalse,则所指定的值将重写针对该行或列的控件值。Resizable 设置为NotSet 可以还原继承。

由于 NotSet 会还原值继承,因此,除非该行或列尚未添加到DataGridView 控件中,否则Resizable 属性永远不会返回NotSet 值。 如果需要确定是否继承了行或列的Resizable 属性值,请检查它的State 属性。 如果State 值包括ResizableSet 标志,则不继承Resizable 属性值。

自动调整大小

DataGridView 控件中有两种自动调整大小:列填充模式和基于内容的自动调整大小。

列填充模式导致控件中的可见列按控件的显示区域的宽度进行填充。 有关该模式的更多信息,请参见Windows 窗体 DataGridView 控件中的列填充模式

还可以配置行、列和标题,使其自动调整它们的大小以容纳它们的单元格内容。 在这种情况下,一旦单元格内容发生更改,就会发生大小调整。

注意注意

如果使用虚拟模式在自定义的数据缓存中维护单元格值,则在用户编辑单元格值时发生自动调整大小,但如果在 CellValuePushed 事件处理程序以外更改缓存值时则不发生。 在这种情况下,调用 UpdateCellValue 方法可以强制控件更新单元格的显示,并应用当前的自动调整大小模式。

如果仅对一个维度(就是说,对行但不对列,或对列但不对行)启用基于内容的自动调整大小,并且还启用了 WrapMode,那么一旦其他维度发生更改,也会发生大小调整。 例如,如果为行但没有为列配置自动调整大小,并且启用了 WrapMode,则用户可以拖动列分隔符以更改列的宽度,并且行高将自动调整,以便仍然能够完全显示单元格内容。

如果同时为行和列配置了基于内容的自动调整大小,并且启用了 WrapMode,则一旦单元格内容发生更改,DataGridView 控件就将调整大小,并且在计算新大小时,该控件将使用理想的单元格高宽比率。

若要为标题和行配置调整大小模式,并为未重写此控件值的列配置该模式,请设置一个或多个下面的 DataGridView 属性:

若要为控件的单个列重写列调整大小模式,请将它的 AutoSizeMode 属性设置为除NotSet 以外的其他值。 实际上,列的调整大小模式由它的InheritedAutoSizeMode 属性确定。 此属性的值基于列的AutoSizeMode 属性值,除非该值是NotSet,这种情况下,将继承控件的AutoSizeColumnsMode 值。

处理大量数据时,如果要使用基于内容的自动调整大小,则要小心。 若要避免性能有损失,请使用自动调整大小模式,该模式将仅基于所显示的行而不会分析控件中的每个行来计算大小。 要获得最高性能,请转而使用编程调整大小,以便可以在特定时间调整大小(例如,在加载新数据之后立即执行)。

基于内容的自动调整大小模式不会影响通过将行或列的 Visible 属性或将控件的RowHeadersVisibleColumnHeadersVisible 属性设置为false 而已经隐藏起来的行、列或标题。 例如,如果在自动调整列的大小以容纳大型单元格值之后该列被隐藏,则在删除包含该大型单元格值的行时,该隐藏列不会更改其大小。 当可见性更改时,不会发生自动调整大小,因此,如果将列的Visible 属性改回true,将不会强制该列基于其当前内容而重新计算其大小。

而编程的基于内容的调整大小则会影响行、列和标题,不管它们的可见性如何。

编程调整大小

如果禁用了自动调整大小,则可以用编程的方式通过下面的属性来为行、列或标题设置准确的宽度或高度:

还可以使用下面的方法通过编程来调整行、列和标题的大小,使其能够容纳它们的内容:

这些方法将一次性调整行、列或标题的大小,而不用为了连续调整大小而配置它们。 系统将自动计算新的大小,以便在不发生裁减的情况下显示所有单元格内容。 但是,如果通过编程来对InheritedAutoSizeMode 属性值为Fill 的列进行大小调整,则会用经过计算的基于内容的宽度按比例调整该列的FillWeight 属性值,然后按照这些新的比例计算实际的列宽,以便让所有列填充该控件的可用显示区域。

编程调整大小可以用来避免连续调整大小时出现性能损失。 它还可用于为可由用户调整大小的行、列和标题以及为列填充模式提供初始大小。

通常,您将在特定时间调用编程调整大小方法。 例如,可能在加载数据之后立即通过编程来调整所有列的大小,也可能在已修改特定单元格值之后通过编程来调整特定行的大小。

自定义基于内容的调整大小行为

通过重写 DataGridViewCell..::.GetPreferredSizeDataGridViewRow..::.GetPreferredHeightDataGridViewColumn..::.GetPreferredWidth 方法,或通过在派生的DataGridView 控件中调用受保护的调整大小方法重载,可以在处理派生的DataGridView 单元格、行和列类型时自定义调整大小行为。 设计受保护的调整大小方法重载是为了进行成对处理,以便获得理想的单元格高宽比率,从而避免出现过宽或过高的单元格。 例如,如果调用 AutoResizeRows 方法的AutoResizeRows(DataGridViewAutoSizeRowsMode,Boolean) 重载,并为Boolean 参数传入值false,则该重载将为行中的单元格计算理想的高度和宽度,但是,它只会调整行高。 然后,必须调用AutoResizeColumns 方法,才能将列宽调整为计算得到的理想值。

基于内容的调整大小选项

对于基于内容的调整大小来说,调整大小的属性和方法所使用的枚举有相似的值。 使用这些值,可以限制使用哪些单元格来计算首选的大小。 对于所有调整大小枚举,其名称引用所显示的单元格的值会将其计算范围限制于所显示的行中的单元格。 若要在处理大量行时避免出现性能损失,则排除行将是有用的。 还可以将计算范围限制于标题或非标题单元格中的单元格值。

25、datagridview的 CellPainting事件,建议最好少用,因为如果datagridview有右键菜单,则点击右键菜单就会执行此方法;缩小datagridview外的窗体,也会执行;拖动列会执行;点击datagridview也会执行;
  如果要实现绑定数据后,修改某些行背景色,则添加DataBindingComplete事件
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值