Dear My Friends of Senior Programmer,
Please Help me, my Problem is cannot retrieve and load the color from my XML file into datagridview (EVENT: FORMTES3_LOAD). the application isn't error but the display of my Datagridview become irregular.
below is my FULL Source Code:
Note : the component is windows form, button, colordialog and datagridview
Imports System
Imports System.IO
Imports System.Xml
Public Class FormTes3
Dim Doc As XmlDocument = New XmlDocument
Dim rowClicked As Integer
Dim colorName As String
Private Sub CreateNewColorElement(ByVal rowID As Integer)
Dim rowNode As XmlNode = Doc.CreateElement("Row")
Dim idAttribute As XmlAttribute = Doc.CreateAttribute("rowID")
idAttribute.Value = rowID.ToString
rowNode.Attributes.Append(idAttribute)
Dim columnNode As XmlNode = Doc.CreateElement("Profile")
Dim backColor As XmlAttribute = Doc.CreateAttribute("BackColor")
backColor.Value = colorName
columnNode.Attributes.Append(backColor)
rowNode.AppendChild(columnNode)
Doc.DocumentElement.AppendChild(rowNode)
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 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
result = ColorDialog1.ShowDialog()
If result = DialogResult.OK Then
Dim rowIndex As Integer = rowClicked
DataGridView1.Rows(rowClicked).DefaultCellStyle.BackColor = ColorDialog1.Color
colorName = GetHexColor(ColorDialog1.Color)
CreateNewColorElement(rowIndex)
ElseIf result = DialogResult.Cancel Then
Return
End If
End If
End Sub
Private Sub FormTes3_Load(sender As Object, e As System.EventArgs) Handles Me.Load
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")
Doc.AppendChild(Doc.CreateElement("DataGridView"))
If System.IO.File.Exists((Application.StartupPath + "\test.xml")) Then
Dim row As Integer
Dim column As Integer
Dim backColor As String
Doc = New XmlDocument
Doc.Load((Application.StartupPath + "\test.xml"))
For Each node As XmlNode In Doc.SelectNodes("//Row")
row = Convert.ToInt32(node.Attributes("rowID").InnerText)
MsgBox(row)
backColor = node.FirstChild.Attributes("BackColor").InnerText
MsgBox(backColor)
DataGridView1.Rows(row).DefaultCellStyle.BackColor = Color.FromName(backColor)
Next
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
Thank you in advance for any help you can provide, my brothers :D
Regards,
Agus Salim (Indonesia)
WEB: www.7global.asia
eMail: *******@asia.com