无法将颜色加载/检索到Datagridview(“使用XML在Datagridview中保存和检索颜色”)
我的问题是无法从XML文件中检索颜色并将其加载到datagridview(在事件:FORMTES3_加载时)。应用程序没有失败,但my Datagridview的显示变得不规则/异常 注:组件为windows窗体(1个单元-“FormTes3”)、colordialog(1个单元-“ColorDialog1”)和datagridview(1个单元-“Datagridview1”) 以下是我的完整源代码:无法将颜色加载/检索到Datagridview(“使用XML在Datagridview中保存和检索颜色”),xml,vb.net,datagridview,colors,Xml,Vb.net,Datagridview,Colors,我的问题是无法从XML文件中检索颜色并将其加载到datagridview(在事件:FORMTES3_加载时)。应用程序没有失败,但my Datagridview的显示变得不规则/异常 注:组件为windows窗体(1个单元-“FormTes3”)、colordialog(1个单元-“ColorDialog1”)和datagridview(1个单元-“Datagridview1”) 以下是我的完整源代码: Imports System Imports System.IO Imports Syste
Imports System
Imports System.IO
Imports System.Xml
Public Class FormTes3
Dim rowClicked As Integer
Dim colorName As String
Dim Doc As New XmlDocument
Private Sub FormTes3_Load(sender As Object, e As System.EventArgs) Handles Me.Load
Doc.AppendChild(Doc.CreateElement("DataGridView"))
' Populate the grid
DataGridView1.Columns.Add("Column1", "Column 1")
DataGridView1.Columns.Add("Column2", "Column 2")
DataGridView1.Columns.Add("Column3", "Column 3")
DataGridView1.Rows.Add("A", "B", "C")
DataGridView1.Rows.Add("A", "B", "C")
DataGridView1.Rows.Add("A", "B", "C")
DataGridView1.Rows.Add("A", "B", "C")
DataGridView1.Rows.Add("A", "B", "C")
If System.IO.File.Exists((Application.StartupPath + "\test.xml")) Then
Dim row As Integer
'Dim column As Integer
Dim backColor As String
Dim docLoad As New XmlDocument
docLoad.Load((Application.StartupPath + "\test.xml"))
For Each node As XmlNode In docLoad.SelectNodes("//Row")
row = Convert.ToInt32(node.Attributes("rowID").InnerText)
MsgBox(row)
backColor = node.FirstChild.Attributes("BackColor").InnerText
MsgBox(backColor)
DataGridView1.Rows(row).DefaultCellStyle.BackColor = ColorTranslator.FromHtml(backColor)
Next
End If
End Sub
Private Function GetHexColor(ByVal colorObj As System.Drawing.Color) As String
Return "#" & Hex(colorObj.R) & Hex(colorObj.G) & Hex(colorObj.B)
End Function
Private Sub CreateNewColorElement(ByVal rowID As Integer)
'Create Row Node & ID Attribute
Dim rowNode As XmlNode = Doc.CreateElement("Row")
Dim idAttribute As XmlAttribute = Doc.CreateAttribute("rowID")
idAttribute.Value = rowID.ToString
rowNode.Attributes.Append(idAttribute)
'Column Node
Dim columnNode As XmlNode = Doc.CreateElement("Profile")
'BackColor
Dim backColor As XmlAttribute = Doc.CreateAttribute("BackColor")
backColor.Value = colorName
columnNode.Attributes.Append(backColor)
rowNode.AppendChild(columnNode)
Doc.DocumentElement.AppendChild(rowNode)
End Sub
Private Sub DataGridView1_MouseUp(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles DataGridView1.MouseUp
Dim result As DialogResult
If e.Button = Windows.Forms.MouseButtons.Right Then
rowClicked = DataGridView1.HitTest(e.Location.X, e.Location.Y).RowIndex
MsgBox("row Click: " & rowClicked)
result = ColorDialog1.ShowDialog()
If result = DialogResult.OK Then
Dim rowIndex As Integer = rowClicked
DataGridView1.Rows(rowClicked).DefaultCellStyle.BackColor = ColorDialog1.Color 'Running Well
colorName = GetHexColor(ColorDialog1.Color)
'If (Not (GlobalVariables.ColorStr) Is Nothing) Then
CreateNewColorElement(rowIndex)
'End If
ElseIf result = DialogResult.Cancel Then
Return
End If
End If
End Sub
Private Sub FormTes3_FormClosing(sender As Object, e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
Dim saveFile As SaveFileDialog = New SaveFileDialog
saveFile.InitialDirectory = Application.StartupPath
saveFile.Filter = "XML files (*.xml)|*.xml"
Dim dr As DialogResult = DialogResult.Yes
If (MessageBox.Show("Do you want to save XML Style?", "Grid Style", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = dr) Then
If (saveFile.ShowDialog = DialogResult.OK) Then
Doc.Save(saveFile.FileName)
End If
End If
End Sub
End Class