0

Visual Studio Express 2012 を使用しています。

次の形式で、プログラムにデータを 1 つの追加データ ファイル (txt、csv、dll など) に保存およびロードさせたいと思います (単なる例です。これは正確である必要はありません。表示するだけです)。あなた)。

[Title1]
Value1
Value2
Value3
Value4

[Title2]
Value1
Value2
Value3
Value4

プログラムは次のように構築されます: フォームがロードされるとすぐに、Combobox1 は括弧 "[]" 内のすべてのタイトル (Title1、Title2 など) で埋められます。

1 つを選択すると、4 つのラベルに値が入力されます。

Label1 = Value1 | Label2 = Value2 | Label3 = Value3 | Label4 = Value4
4

1 に答える 1

0

クラスを使用してタイトル/値を保持し、XmlSerializer を使用して XML ファイルを読み書きする例を次に示します。クラスのインスタンスはリストに保持されます。

コードは次のとおりです。

Public Class Form1

    <Serializable> _
    Public Class TitleGroup

        Public Title As String
        Public Value1 As String
        Public Value2 As String
        Public Value3 As String
        Public Value4 As String

        Public Overrides Function ToString() As String
            Return Title
        End Function

    End Class

    Private TitleGroups As New List(Of TitleGroup)
    Private DataFile As String = System.IO.Path.Combine(Application.StartupPath, "Data.xml")

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        LoadXmlData()
    End Sub

    Private Sub LoadXmlData()
        If System.IO.File.Exists(DataFile) Then
            Try
                Dim xml As New System.Xml.Serialization.XmlSerializer(TitleGroups.GetType)
                Using fs As New System.IO.FileStream(DataFile, IO.FileMode.Open, IO.FileAccess.Read)
                    TitleGroups = DirectCast(xml.Deserialize(fs), List(Of TitleGroup))
                End Using
                ComboBox1.DataSource = Nothing
                ComboBox1.DataSource = TitleGroups
            Catch ex As Exception
                MessageBox.Show(ex.ToString, "Error Loading XML Data")
            End Try
        End If
    End Sub

    Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged
        If ComboBox1.SelectedIndex <> -1 Then
            Dim TG As TitleGroup = ComboBox1.SelectedItem
            Label1.Text = TG.Value1
            Label2.Text = TG.Value2
            Label3.Text = TG.Value3
            Label4.Text = TG.Value4
        End If
    End Sub

    Private Sub Form1_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
        SaveXmlData()
    End Sub

    Private Sub SaveXmlData()
        Try
            Dim xml As New System.Xml.Serialization.XmlSerializer(TitleGroups.GetType)
            Using fs As New System.IO.FileStream(DataFile, IO.FileMode.OpenOrCreate, IO.FileAccess.Write)
                xml.Serialize(fs, TitleGroups)
            End Using
        Catch ex As Exception
            MessageBox.Show(ex.ToString, "Error Saving XML Data")
        End Try
    End Sub

End Class

XML ファイルの例を次に示します。

<?xml version="1.0"?>
<ArrayOfTitleGroup xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <TitleGroup>
    <Title>Pets</Title>
    <Value1>Dog</Value1>
    <Value2>Cat</Value2>
    <Value3>Fish</Value3>
    <Value4>Hamster</Value4>
  </TitleGroup>
  <TitleGroup>
    <Title>Languages</Title>
    <Value1>C#</Value1>
    <Value2>VB.Net</Value2>
    <Value3>Java</Value3>
    <Value4>Objective-C</Value4>
  </TitleGroup>
</ArrayOfTitleGroup>
于 2013-06-13T21:38:50.717 に答える