关于 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值