当前位置:首页 > 网络编程 > WEB编程 > ASP.net >  Henry手记:WinForm Datagrid结构剖析(三)使用代码

 Henry手记:WinForm Datagrid结构剖析(三)使用代码

点击次数:16 次 发布日期:2008-11-26 11:12:45 作者:源代码网
源代码网推荐      接(三)类代码一文:(由于每篇文章的字数限制,不得不割开发,见谅!)
源代码网推荐  
源代码网推荐   "----------------------------------------------------------------------
源代码网推荐  
源代码网推荐   " 辅助方法
源代码网推荐  
源代码网推荐   "----------------------------------------------------------------------
源代码网推荐  
源代码网推荐   Private ReadOnly Property DataGridTableGridLineWidth() As Integer
源代码网推荐  
源代码网推荐   Get
源代码网推荐  
源代码网推荐   If Me.DataGridTableStyle.GridLineStyle = DataGridLineStyle.Solid Then
源代码网推荐  
源代码网推荐   Return 1
源代码网推荐  
源代码网推荐   Else
源代码网推荐  
源代码网推荐   Return 0
源代码网推荐  
源代码网推荐   End If
源代码网推荐  
源代码网推荐   End Get
源代码网推荐  
源代码网推荐   End Property
源代码网推荐  
源代码网推荐   Private Sub EndEdit()
源代码网推荐  
源代码网推荐   InEdit = False
源代码网推荐  
源代码网推荐   Invalidate()
源代码网推荐  
源代码网推荐   End Sub
源代码网推荐  
源代码网推荐   Private Function GetText(ByVal Value As Object) As String
源代码网推荐  
源代码网推荐   If Value Is System.DBNull.Value Then Return NullText
源代码网推荐  
源代码网推荐   If Not Value Is Nothing Then
源代码网推荐  
源代码网推荐   Return Value.ToString
源代码网推荐  
源代码网推荐   Else
源代码网推荐  
源代码网推荐   Return String.Empty
源代码网推荐  
源代码网推荐   End If
源代码网推荐  
源代码网推荐   End Function
源代码网推荐  
源代码网推荐   Private Sub HideComboBox() ‘隐藏Combobox
源代码网推荐  
源代码网推荐   If Combo.Focused Then
源代码网推荐  
源代码网推荐   Me.DataGridTableStyle.DataGrid.Focus()
源代码网推荐  
源代码网推荐   End If
源代码网推荐  
源代码网推荐   Combo.Visible = False
源代码网推荐  
源代码网推荐   End Sub
源代码网推荐  
源代码网推荐   Private Sub RollBack()
源代码网推荐  
源代码网推荐   Combo.Text = OldVal
源代码网推荐  
源代码网推荐   End Sub
源代码网推荐  
源代码网推荐   Private Sub PaintText(ByVal g As Graphics, _
源代码网推荐  
源代码网推荐   ByVal Bounds As Rectangle, _
源代码网推荐  
源代码网推荐   ByVal Text As String, _
源代码网推荐  
源代码网推荐   ByVal AlignToRight As Boolean)
源代码网推荐  
源代码网推荐   Dim BackBrush As Brush = New SolidBrush(Me.DataGridTableStyle.BackColor)
源代码网推荐  
源代码网推荐   Dim ForeBrush As Brush = New SolidBrush(Me.DataGridTableStyle.ForeColor)
源代码网推荐  
源代码网推荐   PaintText(g, Bounds, Text, BackBrush, ForeBrush, AlignToRight)
源代码网推荐  
源代码网推荐   End Sub
源代码网推荐  
源代码网推荐   Private Sub PaintText(ByVal g As Graphics, _
源代码网推荐  
源代码网推荐   ByVal TextBounds As Rectangle, _
源代码网推荐  
源代码网推荐   ByVal Text As String, _
源代码网推荐  
源代码网推荐   ByVal BackBrush As Brush, _
源代码网推荐  
源代码网推荐   ByVal ForeBrush As Brush, _
源代码网推荐  
源代码网推荐   ByVal AlignToRight As Boolean)
源代码网推荐  
源代码网推荐   Dim Rect As Rectangle = TextBounds
源代码网推荐  
源代码网推荐   Dim RectF As RectangleF = RectF.op_Implicit(Rect) " 转为RectangleF类型
源代码网推荐  
源代码网推荐   Dim Format As StringFormat = New StringFormat()
源代码网推荐  
源代码网推荐   If AlignToRight Then
源代码网推荐  
源代码网推荐   Format.FormatFlags = StringFormatFlags.DirectionRightToLeft
源代码网推荐  
源代码网推荐   End If
源代码网推荐  
源代码网推荐   Select Case Me.Alignment
源代码网推荐  
源代码网推荐   Case Is = HorizontalAlignment.Left
源代码网推荐  
源代码网推荐   Format.Alignment = StringAlignment.Near
源代码网推荐  
源代码网推荐   Case Is = HorizontalAlignment.Right
源代码网推荐  
源代码网推荐   Format.Alignment = StringAlignment.Far
源代码网推荐  
源代码网推荐   Case Is = HorizontalAlignment.Center
源代码网推荐  
源代码网推荐   Format.Alignment = StringAlignment.Center
源代码网推荐  
源代码网推荐   End Select
源代码网推荐  
源代码网推荐   Format.FormatFlags = Format.FormatFlags Or StringFormatFlags.NoWrap
源代码网推荐  
源代码网推荐   g.FillRectangle(Brush:=BackBrush, Rect:=Rect)
源代码网推荐  
源代码网推荐   Rect.Offset(0, yMargin)
源代码网推荐  
源代码网推荐   Rect.Height -= yMargin
源代码网推荐  
源代码网推荐   g.DrawString(Text, Me.DataGridTableStyle.DataGrid.Font, ForeBrush, RectF, Format)
源代码网推荐  
源代码网推荐   Format.Dispose()
源代码网推荐  
源代码网推荐   End Sub
源代码网推荐  
源代码网推荐  End Class
源代码网推荐  
源代码网推荐  4. 类的使用
源代码网推荐  
源代码网推荐  如何使用这个类呢?方法其实很简单,把它看成与DataGridTextBoxColumn或DataGridBoolColumn一样处理就行了。见下例:数据库名为Northwind.mdb
源代码网推荐  
源代码网推荐  Private Sub FrmDropDownColumn_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
源代码网推荐  
源代码网推荐  
源代码网推荐  
源代码网推荐   Dim objCustomerCM As CurrencyManager
源代码网推荐  
源代码网推荐   Dim objCustomerTableStyle As DataGridTableStyle
源代码网推荐  
源代码网推荐   Dim objGridCol As DataGridColumnStyle
源代码网推荐  
源代码网推荐   Dim IntAvgCharWidth As Integer
源代码网推荐  
源代码网推荐   " 新建一个DataSet对象
源代码网推荐  
源代码网推荐   _CustomerDS = New DataSet()
源代码网推荐  
源代码网推荐   "新建一个DataTable对象
源代码网推荐  
源代码网推荐   _StatesDT = New DataTable()
源代码网推荐  
源代码网推荐   "新建一个 DataGridTableStyle 对象
源代码网推荐  
源代码网推荐   GridTableStyle = New DataGridTableStyle()
源代码网推荐  
源代码网推荐   "计算显示时平均每个字符的宽度
源代码网推荐  
源代码网推荐   With Graphics.FromHwnd(Me.Handle).MeasureString(Text:="ABCDEFGHIJKLMNOPQRSTUVWXYZ", Font:=Me.Font)
源代码网推荐  
源代码网推荐   IntAvgCharWidth = CInt(.Width / 26!)
源代码网推荐  
源代码网推荐   End With
源代码网推荐  
源代码网推荐   " 建立与数据库的连接
源代码网推荐  
源代码网推荐   _DB = New OleDbConnection()
源代码网推荐  
源代码网推荐   Try
源代码网推荐  
源代码网推荐   With _DB
源代码网推荐  
源代码网推荐   .ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
源代码网推荐  
源代码网推荐   "Data Source=c:Northwind.mdb"
源代码网推荐  
源代码网推荐   .Open()
源代码网推荐  
源代码网推荐   End With
源代码网推荐  
源代码网推荐   Catch dbError As OleDbException
源代码网推荐  
源代码网推荐   Stop
源代码网推荐  
源代码网推荐   End Try
源代码网推荐  
源代码网推荐   _DB.Close()
源代码网推荐  
源代码网推荐   "
源代码网推荐  
源代码网推荐   "新生成一条SQL语句且在DataSet中新建一个用户表
源代码网推荐  
源代码网推荐   StrSQL = "SELECT * FROM 客户 WHERE 国家=" & Chr(34) & "美国" & Chr(34) & " ORDER BY 客户ID ASC"
源代码网推荐  
源代码网推荐   Try
源代码网推荐  
源代码网推荐   With New OleDbDataAdapter(selectCommand:=New OleDbCommand(cmdText:=StrSQL, _
源代码网推荐  
源代码网推荐   Connection:=_DB))
源代码网推荐  
源代码网推荐   .Fill(dataSet:=_CustomerDS, srcTable:="Customers")
源代码网推荐  
源代码网推荐   .Dispose()
源代码网推荐  
源代码网推荐   End With
源代码网推荐  
源代码网推荐   Catch dbError As OleDbException
源代码网推荐  
源代码网推荐   Stop
源代码网推荐  
源代码网推荐   End Try
源代码网推荐  
源代码网推荐   " 同与下拉框内容相关的数据源进行连接
源代码网推荐  
源代码网推荐   _DB = New OleDbConnection()
源代码网推荐  
源代码网推荐   Try
源代码网推荐  
源代码网推荐   With _DB
源代码网推荐  
源代码网推荐   .ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
源代码网推荐  
源代码网推荐   "Data Source=c:Northwind.mdb"
源代码网推荐  
源代码网推荐   .Open()
源代码网推荐  
源代码网推荐   End With
源代码网推荐  
源代码网推荐   Catch dbError As OleDbException
源代码网推荐  
源代码网推荐   Stop
源代码网推荐  
源代码网推荐   End Try
源代码网推荐  
源代码网推荐   _DB.Close()
源代码网推荐  
源代码网推荐   " 创建SQL语句
源代码网推荐  
源代码网推荐   StrSQL = "SELECT * FROM States ORDER BY 国家名 ASC"
源代码网推荐  
源代码网推荐   Try
源代码网推荐  
源代码网推荐   With New OleDbDataAdapter(selectCommand:=New OleDbCommand(cmdText:=StrSQL, _
源代码网推荐  
源代码网推荐   Connection:=_DB))
源代码网推荐  
源代码网推荐   .Fill(dataSet:=_CustomerDS, srcTable:="国家")
源代码网推荐  
源代码网推荐   .Dispose()
源代码网推荐  
源代码网推荐   End With
源代码网推荐  
源代码网推荐   Catch dbError As OleDbException
源代码网推荐  
源代码网推荐   Stop
源代码网推荐  
源代码网推荐   End Try
源代码网推荐  
源代码网推荐  
源代码网推荐  
源代码网推荐   With _CustomerDS.Tables
源代码网推荐  
源代码网推荐   objCustomerCM = CType(Me.BindingContext(.Item(Name:="Customers")), CurrencyManager)
源代码网推荐  
源代码网推荐   End With
源代码网推荐  
源代码网推荐   "生成显示信息
源代码网推荐  
源代码网推荐   With GridTableStyle
源代码网推荐  
源代码网推荐   .MappingName = "Customers"
源代码网推荐  
源代码网推荐   With .GridColumnStyles
源代码网推荐  
源代码网推荐   .Add(column:=New DataGridTextBoxColumn(objCustomerCM. _
源代码网推荐  
源代码网推荐   GetItemProperties.Item(Name:="地址")))
源代码网推荐  
源代码网推荐   With .Item(index:=0)
源代码网推荐  
源代码网推荐   .MappingName = "地址"
源代码网推荐  
源代码网推荐   .HeaderText = "地址"
源代码网推荐  
源代码网推荐   .Alignment = HorizontalAlignment.Left
源代码网推荐  
源代码网推荐   .Width = IntAvgCharWidth * 20
源代码网推荐  
源代码网推荐   .NullText = String.Empty
源代码网推荐  
源代码网推荐   End With
源代码网推荐  
源代码网推荐   _StatesDT = _CustomerDS.Tables.Item("国家")
源代码网推荐  
源代码网推荐   .Add(column:=New DataGridComboBoxColumn(DataSource:=_StatesDT, _
源代码网推荐  
源代码网推荐   DisplayMember:=0, _
源代码网推荐  
源代码网推荐   ValueMember:=0))
源代码网推荐  
源代码网推荐   With .Item(index:=1)
源代码网推荐  
源代码网推荐   .MappingName = "国家"
源代码网推荐  
源代码网推荐   .HeaderText = "国家"
源代码网推荐  
源代码网推荐   .Alignment = HorizontalAlignment.Left
源代码网推荐  
源代码网推荐   .Width = IntAvgCharWidth * 10
源代码网推荐  
源代码网推荐   .NullText = String.Empty
源代码网推荐  
源代码网推荐   End With
源代码网推荐  
源代码网推荐   .Add(column:=New DataGridTextBoxColumn(objCustomerCM. _
源代码网推荐  
源代码网推荐   GetItemProperties.Item(Name:="城市")))
源代码网推荐  
源代码网推荐   With .Item(index:=2)
源代码网推荐  
源代码网推荐   .MappingName = "城市"
源代码网推荐  
源代码网推荐   .HeaderText = "城市"
源代码网推荐  
源代码网推荐   .Alignment = HorizontalAlignment.Left
源代码网推荐  
源代码网推荐   .Width = IntAvgCharWidth * 20
源代码网推荐  
源代码网推荐   .NullText = String.Empty
源代码网推荐  
源代码网推荐   End With
源代码网推荐  
源代码网推荐   End With
源代码网推荐  
源代码网推荐   End With
源代码网推荐  
源代码网推荐   With EntryGrid
源代码网推荐  
源代码网推荐   .CaptionText = String.Empty
源代码网推荐  
源代码网推荐   .DataSource = _CustomerDS
源代码网推荐  
源代码网推荐   .DataMember = "Customers"
源代码网推荐  
源代码网推荐   .TableStyles.Add(table:=GridTableStyle)
源代码网推荐  
源代码网推荐   End With
源代码网推荐  
源代码网推荐   End Sub
源代码网推荐  
源代码网推荐  
源代码网推荐  
源代码网推荐  致谢:本程序参考了网上的多个实现方案,在此向各位原作者表示感谢。
源代码网推荐  
源代码网推荐  ----
源代码网推荐  
源代码网推荐    声明:本文版权与解释权归韩睿所有,如需转载,请保留完整的内容及此声明。  做人要厚道,请注明转自酷网动力(www.ASPCOOL.COM)。
源代码网推荐


源代码网供稿.
网友评论 (0)
会员中心
网络编程
本站推荐
网络编程之精华