关于 WinForm 里 DataGridView , TreeView 的一点记录

 

一、编程方式修改被绑定的数据对象 

        // 利用 DataBindingComplete 在数据绑定操作完成之后发生
         private   void  dataGridView1_DataBindingComplete( object  sender, DataGridViewBindingCompleteEventArgs e)
        {
            
// 编辑绑定列的显示定义,具体表现为 DataGridViewColumn 设置
             for  ( int  i  =   0 ; i  <   this .dataGridView1.Columns.Count; i ++ )
            {
                
this .dataGridView1.Columns[ " id " ].DataPropertyName  =   "" ;
                
this .dataGridView1.Columns[ " id " ].Visible  =   true ;
            }

            
// 编辑绑定每行的单元格值,具体表现为 DataGridViewCell 设置
             for  ( int  i  =   0 ; i  <  dataGridView1.Rows.Count; i ++ )
            {
                
this .dataGridView1.Rows[i].Cells[ 0 ].Value  =   " 1111 " ;
            }
        }

 


Tips:
如何:操作 Windows 窗体 DataGridView 控件中的行
ms-help://MS.VSCC.v90/MS.MSDNQTR.v90.chs/dv_fxmclictl/html/522d8944-e073-4488-9673-923f0a8d7214.htm

 如何:为 Windows 窗体 DataGridView 控件设置交替行样式
ms-help://MS.VSCC.v90/MS.MSDNQTR.v90.chs/dv_fxmclictl/html/699ef759-458c-426d-ac87-7c7e71b018ae.htm

如何:创建未绑定的 Windows 窗体 DataGridView 控件
ms-help://MS.VSCC.v90/MS.MSDNQTR.v90.chs/dv_fxmclictl/html/b5d4b47d-9a28-4d88-9dba-0a3c90fba71d.htm

如何:访问绑定到 Windows 窗体 DataGridView 行的对象(使用 DataGridViewRow.DataBoundItem 属性)
ms-help://MS.VSCC.v90/MS.MSDNQTR.v90.chs/dv_fxmclictl/html/0e05748f-4403-4eb8-8b2f-b098108181b5.htm

 

=====================================

ContractedBlock.gif ExpandedBlockStart.gif [转] [04-18] winForm:DataGridView的一些技巧
None.gifhttp://bbs.dingdi.com/thread-791757-1-1.html
None.gif

None.gif
----------------------------------------
None.gif把对DataGridView操作的一些技巧总结和借鉴了一下,总结如下:
None.gif
None.gif
1、自定义列
None.gif
None.gif   Customize Cells and Columns 
in the Windows Forms DataGridView Control by Extending Their
None.gif
None.gif    Behavior and Appearance
None.gif
None.gif    Host Controls 
in Windows Forms DataGridView Cells
None.gif
None.gif    继承 DataGridViewTextBoxCell 类生成新的Cell类,然后再继承 DataGridViewColumn 生成新的Column类,并指定
None.gif
None.gif    CellTemplate为新的Cell类。新生成的Column便可以增加到DataGridView中去。
None.gif
None.gif
2、自动适应列宽
None.gif
None.gif
None.gifProgrammatically Resize Cells to Fit Content 
in the Windows Forms DataGridView Control
None.gif
None.gif    Samples:
None.gif
None.gif    DataGridView.AutoSizeColumns(
None.gif
None.gif           DataGridViewAutoSizeColumnCriteria.HeaderAndDisplayedRows);
None.gif
None.gif    DataGridView.AutoSizeColumn(
None.gif
None.gif                DataGridViewAutoSizeColumnCriteria.HeaderOnly,
None.gif
None.gif                
2false);
None.gif
None.gif    DataGridView.AutoSizeRow(
None.gif
None.gif                DataGridViewAutoSizeRowCriteria.Columns,
None.gif
None.gif                
2false);
None.gif
None.gif    DataGridView.AutoSizeRows(
None.gif
None.gif              DataGridViewAutoSizeRowCriteria.HeaderAndColumns,
None.gif
None.gif                
0, dataGridView1.Rows.Count, false);
None.gif
None.gif
3、可以绑定并显示对象
None.gif
None.gifBind Objects to Windows Forms DataGridView Controls
None.gif
None.gif
4、可以改变表格线条风格
None.gif
None.gif
None.gifChange the Border and Gridline Styles 
in the Windows Forms DataGridView Control
None.gif
None.gif    Samples:
None.gif
None.gif    
this.dataGridView1.GridColor = Color.BlueViolet;
None.gif
None.gif    
this.dataGridView1.BorderStyle = BorderStyle.Fixed3D;
None.gif
None.gif    
this.dataGridView1.CellBorderStyle = DataGridViewCellBorderStyle.None;
None.gif
None.gif    
this.dataGridView1.RowHeadersBorderStyle = DataGridViewHeaderBorderStyle.Single;
None.gif
None.gif    
this.dataGridView1.ColumnHeadersBorderStyle = DataGridViewHeaderBorderStyle.Single;
None.gif
None.gif
5、动态改变列是否显示,和动态改变列的显示顺序
None.gif
None.gif
None.gifChange the Order of the Columns 
in the Windows Forms DataGridView Control
None.gif
None.gif    Samples:
None.gif
None.gif    customersDataGridView.Columns[
"CustomerID"].Visible = false;
None.gif
None.gif    customersDataGridView.Columns[
"ContactName"].DisplayIndex = 0;
None.gif
None.gif    customersDataGridView.Columns[
"ContactTitle"].DisplayIndex = 1;
None.gif
None.gif    customersDataGridView.Columns[
"City"].DisplayIndex = 2;
None.gif
None.gif    customersDataGridView.Columns[
"Country"].DisplayIndex = 3;
None.gif
None.gif    customersDataGridView.Columns[
"CompanyName"].DisplayIndex = 4;
None.gif
None.gif
6、可以在列中显示图像
None.gif
None.gif  Display Images 
in Cells of the Windows Forms DataGridView Control
None.gif
None.gif    Samples:
None.gif
None.gif            Icon treeIcon 
= new Icon(this.GetType(), "tree.ico");
None.gif
None.gif           DataGridViewImageColumn iconColumn 
= new DataGridViewImageColumn ();
None.gif
None.gif           iconColumn.Image 
= treeIcon.ToBitmap();
None.gif
None.gif           iconColumn.Name 
= "Tree";
None.gif
None.gif           iconColumn.HeaderText 
= "Nice tree";
None.gif
None.gif           dataGridView1.Columns.Insert(
2, iconColumn);
None.gif
None.gif
7、格式化显示内容:
None.gif
None.gif   Format Data 
in the Windows Forms DataGridView Control
None.gif
None.gif    Samples:
None.gif
None.gif    
this.dataGridView1.Columns["UnitPrice"].DefaultCellStyle.Format = "c";
None.gif
None.gif    
this.dataGridView1.Columns["ShipDate"].DefaultCellStyle.Format = "d";
None.gif
None.gif    
this.dataGridView1.DefaultCellStyle.NullValue = "no entry";
None.gif
None.gif    
this.dataGridView1.DefaultCellStyle.WrapMode = DataGridViewWrapMode.Wrap;
None.gif
None.gif    
this.dataGridView1.Columns["CustomerName"].DefaultCellStyle.Alignment =
None.gif
None.gifDataGridViewContentAlignment.MiddleRight;
None.gif
None.gif
None.gif
None.gif
8、在拖动列的滚动条时可以将指定的列冻结
None.gif
None.gif  Freeze Columns 
in the Windows Forms DataGridView Control
None.gif
None.gif    Samples:将指定列及以前的列固定不动
None.gif
None.gif    
this.dataGridView1.Columns["AddToCartButton"].Frozen = true;
None.gif
None.gif
9、获取选择的单元格,行,列
None.gif
None.gif  Get the Selected Cells, Rows, and Columns 
in the Windows Forms DataGridView Control
None.gif
None.gif    Samples:
None.gif
None.gif       见msdn。
None.gif
None.gif
10、显示录入时出现的错误信息
None.gif
None.gif
None.gifHandle Errors that Occur During Data Entry 
in the Windows Forms DataGridView Control
None.gif
None.gif    Samples:
None.gif
None.gif    
private void dataGridView1_DataError(object sender,
None.gif
None.gif        DataGridViewDataErrorEventArgs e)
None.gif
ExpandedBlockStart.gifContractedBlock.gif        
dot.gif{
InBlock.gif
InBlock.gif        
// If the data source raises an exception when a cell value is
InBlock.gif
InBlock.gif        
// commited, display an error message.
InBlock.gif

InBlock.gif        
if (e.Exception != null &&
InBlock.gif
InBlock.gif            e.Context 
== DataGridViewDataErrorContext.Commit)
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif
InBlock.gif            MessageBox.Show(
"CustomerID value must be unique.");
InBlock.gif
ExpandedSubBlockEnd.gif        }

InBlock.gif
ExpandedBlockEnd.gif        }

None.gif
None.gif
11、大数据量显示采用Virtual Mode
None.gif
None.gif    Implement Virtual Mode 
in the Windows Forms DataGridView Control
None.gif
None.gif
12、设置指定的列只读
None.gif
None.gif   Make Columns 
in the Windows Forms DataGridView Control Read-Only
None.gif
None.gif    Samples:
None.gif
None.gif    dataGridView1.Columns[
"CompanyName"].ReadOnly = true;
None.gif
None.gif
13、移去自动生成的列
None.gif
None.gif  Remove Autogenerated Columns from a Windows Forms DataGridView Control
None.gif
None.gif    Sample:
None.gif
None.gif    dataGridView1.AutoGenerateColumns 
= true;
None.gif
None.gif    dataGridView1.DataSource 
= customerDataSet;
None.gif
None.gif    dataGridView1.Columns.Remove (
"Fax");
None.gif
None.gif    或:
None.gif
None.gif    dataGridView1.Columns[
"CustomerID"].Visible = false;
None.gif
None.gif
14、自定义选择模式
None.gif
None.gif   Set the Selection Mode of the Windows Forms DataGridView Control
None.gif
None.gif    Sample:
None.gif
None.gif    
this.dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
None.gif
None.gif    
this.dataGridView1.MultiSelect = false;
None.gif
None.gif
15、自定义设定光标进入单元格是否编辑模式(编辑模式)
None.gif
None.gif    Specify the Edit Mode 
for the Windows Forms DataGridView Control
None.gif
None.gif    
this.dataGridView1.EditMode = DataGridViewEditMode.EditOnEnter;
None.gif
None.gif
16、新行指定默认值
None.gif
None.gif   Specify Default Values 
for New Rows in the Windows Forms DataGridView Control
None.gif
None.gif    Sample:
None.gif
None.gif    
private void dataGridView1_DefaultValuesNeeded(object sender,                       System.Windows.Forms.DataGridViewRowEventArgs e)
None.gif
ExpandedBlockStart.gifContractedBlock.gif    
dot.gif{
InBlock.gif
InBlock.gif      e.Row.Cells[
"Region"].Value = "WA";
InBlock.gif
InBlock.gif       e.Row.Cells[
"City"].Value = "Redmond";
InBlock.gif
InBlock.gif       e.Row.Cells[
"PostalCode"].Value = "98052-6399";
InBlock.gif
InBlock.gif      e.Row.Cells[
"Region"].Value = "NA";
InBlock.gif
InBlock.gif      e.Row.Cells[
"Country"].Value = "USA";
InBlock.gif
InBlock.gif    e.Row.Cells[
"CustomerID"].Value = NewCustomerId();
InBlock.gif
ExpandedBlockEnd.gif    }

None.gif
None.gif
17、数据验证
None.gif
None.gif   Validate Data 
in the Windows Forms DataGridView Control
None.gif
None.gif    Samples:
None.gif
None.gif     
private void dataGridView1_CellValidating(object sender,
None.gif
None.gif            DataGridViewCellValidatingEventArgs e)
None.gif
ExpandedBlockStart.gifContractedBlock.gif        
dot.gif{
InBlock.gif
InBlock.gif        
// Validate the CompanyName entry by disallowing empty strings.
InBlock.gif

InBlock.gif        
if (dataGridView1.Columns[e.ColumnIndex].Name == "CompanyName")
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif
InBlock.gif            
if (e.FormattedValue.ToString() == String.Empty)
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif
InBlock.gif                dataGridView1.Rows[e.RowIndex].ErrorText 
=
InBlock.gif
InBlock.gif                    
"Company Name must not be empty";
InBlock.gif
InBlock.gif                e.Cancel 
= true;
InBlock.gif
ExpandedSubBlockEnd.gif            }

InBlock.gif
ExpandedSubBlockEnd.gif        }

InBlock.gif
ExpandedBlockEnd.gif        }

None.gif
18、数据提交到dataset中
None.gif                DataSet ds 
= new DataSet("MyDataSet");
None.gif                ds.Tables[biaom.Trim()].Rows.Clear();
None.gif                
try
ExpandedBlockStart.gifContractedBlock.gif                
dot.gif{
InBlock.gif                    
for (int i = 0; i < dataGridView1.Rows.Count - 1; i++)
ExpandedSubBlockStart.gifContractedSubBlock.gif                    
dot.gif{
InBlock.gif                        DataTable dt 
= ds.Tables[biaom.Trim()];
InBlock.gif                        DataRow myrow 
= ds.Tables[biaom.Trim()].NewRow();
InBlock.gif                        
for (int j = 0; j < dataGridView1.Columns.Count; j++)
ExpandedSubBlockStart.gifContractedSubBlock.gif                        
dot.gif{
InBlock.gif                            myrow[j] 
= Convert.ToString(dataGridView1.Rows.Cells[j].Value);
ExpandedSubBlockEnd.gif                        }

InBlock.gif                        ds.Tables[biaom.Trim()].Rows.Add(myrow);
ExpandedSubBlockEnd.gif                    }

ExpandedBlockEnd.gif                }

None.gif                
catch (Exception)
ExpandedBlockStart.gifContractedBlock.gif                
dot.gif{
InBlock.gif                   
InBlock.gif
InBlock.gif                    MessageBox.Show(
"输入类型错误!");
InBlock.gif
InBlock.gif
return;
ExpandedBlockEnd.gif                }

None.gif
None.gif




DataGridView显示时一行都不选
dataGridView1.CurrentRow.Selected = false;





TreeView

1.单层子节点不可编辑
虽然在 TreeView 可以通过设定 LableEdit 属性来让节点不可被编辑,
但是如果要限定 单层节点不被编辑则麻烦的多,
这时候可以利用 节点编辑前事件来让特定的节点取消编辑

None.gif          // 编辑前事件, Level 1不可编辑
None.gif
         private   void  tvModel_BeforeLabelEdit( object  sender, NodeLabelEditEventArgs e)
ExpandedBlockStart.gifContractedBlock.gif        
dot.gif {
InBlock.gif            
if (e.Node.Level == 1)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                e.CancelEdit 
= true;
ExpandedSubBlockEnd.gif            }

ExpandedBlockEnd.gif        }



转载于:https://www.cnblogs.com/kiant71/archive/2009/05/11/1752032.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Winform窗体DataGridView是一个用于显示和编辑数据的控件。它可以在窗体上显示数据表格,并提供了丰富的功能,如排序、筛选、分页、编辑、删除、添加等。它可以绑定数据源,支持多种数据类型,如文本、数字、日期、图片等。同时,它还可以自定义样式和布局,以满足不同的需求。在Winform应用程序中,DataGridView是一个非常常用的控件,可以帮助我们快速地开发出功能强大的数据管理系统。 ### 回答2: Winform窗体中的DataGridView是一种用于显示和编辑二维数据的控件。它提供了一种方便且易于使用的界面来浏览和管理数据。DataGridView可以用于加载和编辑大量数据,也可以进行排序、筛选、分页和格式化等功能。 在Winform中使用DataGridView非常简单,可以在代码中手动添加和行,也可以通过数据源绑定自动添加。使用DataGridView可以方便地处理用户输入数据的合法性检查和更新,而且能够自动实现一些其他控件无法提供的功能。例如,DataGridView自动支持单元格合并和奇偶行的颜色设置。 DataGridView的多种事件和属性也使得它非常灵活。例如,可以通过事件处理程序来动态改变单元格样式、添加自定义的排序规则和筛选器、实现拖放操作、设置行头和头样式等。 总的来说,Winform窗体中的DataGridView是一个非常实用且强大的控件,它可以为我们提供各种数据展示和处理方案,也可以充分展示Winfrom的功能及应用优势。需要注意的是,在使用过程中我们应该使其高效运行、避免内存泄漏和意外崩溃等问题。 ### 回答3: WinForm是一种基于Windows应用程序的开发模型,可以使用Visual Studio和.NET框架进行开发。其中,DataGridViewWinForm中常见的控件之一,它提供了一个方便的方式来在应用程序窗体中呈现和编辑表格数据。 DataGridView可以显示任何数据源,包括数组、集合、DataTable、ListBox、XmlDocument,甚至自定义对象等。可以通过控制DataGridView的DataSource属性来指定数据源。 除此之外,DataGridView还提供了一系和行操作方法,允许用户在运行时添加或删除行、,调整的宽度或居中方式等。此外还可以使用的样式属性(如DefaultCellStyle和HeaderCellStyle)来设置单元格的外观、字体、颜色、对齐方式等。 DataGridView也支持各种事件,例如CellValueChanged、RowValidated、CellClick等来响应用户和数据的操作。 总而言之,使用WinForm中的DataGridView控件可以为应用程序提供一个功能强大的数据表格展示和编辑功能,使得用户和开发人员都能够更加方便地处理和管理大量数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值