VB.NET中關於DataGrid顏色的自定義。 (轉)
近來專案用到了一個類似DataGrid中自定義行或列的顏色的功能,然而應用卻是在WIN的窗體下,實現起來無法使用類似script的指令碼註冊的功能來動態完成,十分著急,察看了CSDN的一些關於下的關於DataGrid的資料,看到這樣的一篇介紹DG結構的美文,題目是《Henry手記:WinFoDatagrid結構剖析》,作者是韓睿(Latitude),其中介紹了WIN DG的顏色的定義,但是主要是針對每一個Cell的。
我們需要的則是標記某一行的資料,用顏色突出顯示,所以作了部分改動,現在把部分程式碼張貼出來供大家參考:
1. 基礎類出自韓睿:
URL: http://www.csdn/develop/read_article.?id=15686
Public Class DataGridColoredTextBoxColumn:namespace prefix = o ns = "urn:schemas--com::office" />
Inherits DataGridTextBoxColumn
Public rowcollection As New Collection()
Public BackColor() As Color
Public ForeColor() As Color
Private Function GetText(ByVal Value As ) As String
If TypeOf (Value) Is System.Null Then
Return NullText
ElseIf Value Is Nothing Then
Return ""
Else
Return Value.ToString
End If
End Function
Protected Overloads Overrs Sub Paint(ByVal g As System.Drawing.Graphics, ByVal bounds As System.Drawing.Rectangle, _
ByVal As System..Forms.CurrencyManager, _
ByVal rowNum As Integer, _
ByVal backBrush As System.Drawing.Brush, _
ByVal foreBrush As System.Drawing.Brush, _
ByVal alignToRight As Boolean)
Dim text As String
text = GetText(GetColumnValueAtRow(source, rowNum))
backBrush = New SolidBrush(TextBox.BackColor)
foreBrush = New SolidBrush(TextBox.ForeColor)
ReDim Preserve BackColor(rowcollection.Count)
ReDim Preserve ForeColor(rowcollection.Count)
Dim i As Integer = 1
Do While (i <= rowcollection.Count)
If rowNum = Val(rowcollection.Item(i)) Then
If Not BackColor(i - 1).IsEmpty Then
backBrush = New SolidBrush(BackColor(i - 1))
End If
If Not ForeColor(i - 1).IsEmpty Then
foreBrush = New SolidBrush(ForeColor(i - 1))
End If
End If
i += 1
L
MyBase.PaintText(g, bounds, text, backBrush, foreBrush, alignToRight)
End Sub
End Class
2.關於行顏色定義的類:
Imports System.Windows.Forms
Namespace Truck_WEB
Public Class DrawDGClass
Public Class ReDrawDataDridControls : Inherits DataGridColoredTextBoxColumn
Public Sub DrawCorol(ByRef DG As DataGrid, Optional ByVal CurrentRowindex As Integer = 0)
'設定選中的行的顏色,預設是第一行選中。
Dim dt As DataTable
Dim ts As New DataGridTableStyle()
ts.AllowSorting = False
Dim aColumnTextColumn As DataGridColoredTextBoxColumn
dt = CType(DG.DataSource, DataTable)
ts.Mappiame = CType(DG.DataSource, DataTable).TableName
DG.TableStyles.Clear()
Dim numCols As Integer
numCols = dt.Columns.Count
Dim i, j As Integer
i = 0
j = 0
Do While (i < numCols)
aColumnTextColumn = New DataGridColoredTextBoxColumn()
Dim rowindex As Integer = 0
For rowindex = 0 To dt.Rows.Count - 1
Dim StrSel As String
Dim MyForeCorol, MyBackCorol As Color
aColumnTextColumn.rowcollection.Add(rowindex)
If rowindex = CurrentRowindex Then
MyForeCorol = Color.White
MyBackCorol = Color.DarkSlateBlue
else
MyForeCorol = Color.DarkSlateBlue
MyBackCorol = Color.White
End If
ReDim Preserve aColumnTextColumn.ForeColor(aColumnTextColumn.rowcollection.Count)
ReDim Preserve aColumnTextColumn.BackColor(aColumnTextColumn.rowcollection.Count)
aColumnTextColumn.ForeColor(rowindex) = MyForeCorol
aColumnTextColumn.BackColor(rowindex) = MyBackCorol
Next
'要更改列頭名,請改下句的HeaderText值
aColumnTextColumn.HeaderText = dt.Columns(i).ColumnName
aColumnTextColumn.MapName = dt.Columns(i).ColumnName
ts.GridColumnStyles.Add(aColumnTextColumn)
i = (i + 1)
Loop
DG.TableStyles.Add(ts)
End Sub
End Class
End Class
End Namespace
以上是設定選中單行的顏色為反色,各位還可以借題發揮一下!例如設定顏色,等等。
在此向《Henry手記:WinForm Datagrid結構剖析》的作者韓睿致謝!
以後我會盡量完善這個DrawDG的類,為大家提供方便!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-957549/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Android中自定義特定顏色的ToastAndroidAST
- 小程式中 icon 顏色自定義解決方案
- 自定義chrome的輸入框背景顏色Chrome
- UIColor 自定義 16進位制顏色UI
- 自定義Toast的背景顏色大小及字型大小AST
- Android自定義邊框背景顏色的ToastAndroidAST
- 利用CAGradientLayer自定義顏色漸變viewView
- 關於web中的顏色表示方法,你知道多少?Web
- IOS 關於16進位制轉顏色 的設定iOS
- 自定義View之顏色漸變折線圖View
- 小程式自定義swiper的指示點樣式及顏色
- 關於所有馬的顏色都相同
- echart使用自定義單個柱狀顏色實現
- 在Mac裡給Terminal終端自定義顏色Mac
- 微信小程式-自定義placeholder顏色和樣式微信小程式
- 0x04_My-OS實現自定義顏色
- 在SSIS中自定義VB.Net指令碼(下)OF指令碼
- 動態改變Drawable中我們自定義背景的顏色並設定顏色以16進位制進行設定
- 關於自定義 Alert
- windows10系統怎麼自定義主題顏色Windows
- Python自定義詞雲圖形狀和文字顏色Python
- python seaborn畫熱力圖,自定義顏色漸變Python
- 純 CSS 解決自定義 CheckBox 背景顏色問題CSS
- Echarts 中國地圖各個省市自治區自定義顏色Echarts地圖
- 形形色色的自定義訊息(上) (轉)
- 形形色色的自定義訊息(下) (轉)
- 自定義隨機顏色的圓形小球view隨手指移動隨機View
- iOS 關於viewController自定義的轉場動畫iOSViewController動畫
- 顏色轉換
- 命令列的顏色(轉)命令列
- QTreeView使用總結14,自定義model,控制對齊和顏色QTView
- ASP.NET中自定義DataGrid分頁設定的實現ASP.NET
- 自定義ItemDecoration分割線的高度、顏色、偏移,看完這個你就懂了
- 關於RecyclerView.ItemDecoration的自定義View
- CSS樣式中顏色與顏色值的應用CSS
- 短視訊系統原始碼,實現按鈕開啟關閉,顏色可自定義原始碼
- Linux shell下的顏色含義Linux
- win10系統如何建立有個性的自定義主題顏色?Win10