DOBON.NET DOBON.NETプログラミング掲示板過去ログ

データの保持

  • 題名: データの保持
  • 著者: 悩み中の人
  • 日時: 2009/07/09 17:03:49
  • ID: 24929
  • この記事の返信元:
    • (なし)
  • この記事への返信:
  • ツリーを表示
環境/言語:[XP]
分類:[.NET]

フォームのテキストボックスにデータを入力して、それを閉じ。
また起動した時、前回入力したデータが保持された状態になっているというシステムを作る場合、やはりデータ保持用のファイルを作りそこにデータを保存させて読み込ませるという方法にした方がいいのでしょうか?
それとも他にもデータ保持に関する方法はあるのでしょうか?
フォームを閉じるというのはアプリケーションを終了させるということでしょうか?それとも、アプリケーションは終了させずにフォームだけ閉じるということでしょうか?もし後者であれば、 No24866 と同じ方法で大丈夫です。前者であれば、やはりファイルがレジストリに保存することになるでしょう。しかし、単にファイルに保存するといっても色々な方法があります。例えば、

外部ファイルにコントロールのプロパティを格納する
http://dobon.net/vb/dotnet/programing/dynamicproperties.html

で紹介している方法などがあります。
> フォームを閉じるというのはアプリケーションを終了させるということでしょうか?それとも、アプリケーションは終了させずにフォームだけ閉じるということでしょうか?

前者です、なるほど。
それでは取りあえずは教えてもらいましたサンプルを見てやろうと思います。
前回教えてもらったサンプルの他、XMLを使っても出来るという事がわかったので。XMLの勉強もかねてここのTipsを見ながら書いてみたらエラーが出てうまくいきませんでした。どうすればよろしいでしょうか。

コード
'どのプロシージャでも使えるようにここにファイルは宣言しました。
Dim filename As String = "C:\Ping_vb\settei_data.xml"
'XML保存用のクラス
Public Class savefile
Public fromText As String
Public toText As String
Public hostText As String
End Class

Public Class main
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim cls As New savefile
Dim xml As New System.Xml.Serialization.XmlSerializer _
(GetType(savefile))
End Sub

エラー: 型:System.Xml.Serialization.XmlSerializerが定義されていません。

一応、対応としてSystem.Xmlをインポートしてみましたがこれも受け付けてくれませんでした。
2009/07/14(Tue) 09:32:26 編集(投稿者)

■No24936に返信(悩み中の人さんの記事)
> エラー: 型:System.Xml.Serialization.XmlSerializerが定義されていません。

MSDN で、XmlSerializer クラスの解説を見てください。
http://msdn.microsoft.com/ja-jp/library/system.xml.serialization.xmlserializer.aspx

そこには下記の記述があるかと思います。
》名前空間 : System.Xml.Serialization
》アセンブリ : System.Xml (System.Xml.dll 内)

これはすなわち、XmlSerializer を利用するためには、必要なアセンブリである
System.Xml.Dll を参照設定に加える必要があるという事を意味しています。

> 一応、対応としてSystem.Xmlをインポートしてみましたがこれも受け付けてくれませんでした。
インポートと参照設定は別の物なので、注意してください。

参照設定は、実行に必要なアセンブリを指定するための物です。
そしてインポートとは、名前空間を省略表記できるようにするための記述です。
ありがとうございます、おかげでデータの保存はできました。
しかし、今度は再度読み込む際に各オブジェクトにデータが表示されない
という状態になりました。なんとか表示させたいのですがどのようにすれば
よろしいでしょうか?
コードは

Dim filename As String = "C:\Ping_vb\settei_data.xml"
'XML保存用のクラス
Public Class savefile
Public fromText As String
Public toText As String
Public hostText As String
End Class

Public Class main

Dim filename As String = "C:\Ping_vb\settei_data.xml"

Private Sub set_form_Load(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles MyBase.Load
'ファイルの有無チェック
If My.Computer.FileSystem.FileExists("C:\Ping_vb\settei_data.xml") Then
Dim save As New System.Xml.Serialization.XmlSerializer(GetType (savefile))
Dim fs As New System.IO.FileStream _(filename,System.IO.FileMode.Open)
Dim cls As savefile = CType(save.Deserialize(fs), savefile)
fs.Close()

Else
MessageBox.Show("ディレクトリは存在しません")
 End If
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles Button2.Click
Dim fromsave As String = fromText.Text
Dim tosave As String = toText.Text
Dim hostsave As String = hostText.Text
Dim cls As New savefile

Dim save As New System.Xml.Serialization.XmlSerializer(GetType(savefile))
Dim fs As New System.IO.FileStream(filename, System.IO.FileMode.Create)
save.Serialize(fs, cls)
fs.Close()
End Sub

End Class
  • 題名: Re[5]: データの保持
  • 著者: 悩み中の人
  • 日時: 2009/07/14 15:33:45
  • ID: 24941
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
ありがとうございます、おかげでデータの保存はできました。
しかし、今度は再度読み込む際に各オブジェクトにデータが表示されない
という状態になりました。なんとか表示させたいのですがどのようにすれば
よろしいでしょうか?
コードは

Dim filename As String = "C:\Ping_vb\settei_data.xml"
'XML保存用のクラス
Public Class savefile
Public fromText As String
Public toText As String
Public hostText As String
End Class

Public Class main

Dim filename As String = "C:\Ping_vb\settei_data.xml"

Private Sub set_form_Load(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles MyBase.Load
'ファイルの有無チェック
If My.Computer.FileSystem.FileExists("C:\Ping_vb\settei_data.xml") Then
Dim save As New System.Xml.Serialization.XmlSerializer(GetType (savefile))
Dim fs As New System.IO.FileStream _(filename,System.IO.FileMode.Open)
Dim cls As savefile = CType(save.Deserialize(fs), savefile)
fs.Close()

Else
MessageBox.Show("ディレクトリは存在しません")
 End If
End Sub
  • 題名: Re[5]: データの保持
  • 著者: 悩み中の人
  • 日時: 2009/07/14 15:37:23
  • ID: 24942
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
ありがとうございます、おかげでデータの保存はできました。
しかし、今度は再度読み込む際に各オブジェクトにデータが表示されない
という状態になりました。なんとか表示させたいのですがどのようにすれば
よろしいでしょうか?
  • 題名: Re[5]: データの保持
  • 著者: 悩み中の人
  • 日時: 2009/07/14 15:58:44
  • ID: 24943
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
ありがとうございます、おかげでデータの保存はできました。
しかし、今度は再度読み込む際に各オブジェクトにデータが表示されない
という状態になりました。なんとか表示させたいのですがどのようにすれば
よろしいでしょうか?

コードは

Dim filename As String = "C:\Ping_vb\settei_data.xml"
'XML保存用のクラス
Public Class savefile
Public fromText As String
Public toText As String
Public hostText As String
End Class

Public Class main

Dim filename As String = "C:\Ping_vb\settei_data.xml"

Private Sub set_form_Load(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles MyBase.Load
'ファイルの有無チェック
If My.Computer.FileSystem.FileExists("C:\Ping_vb\settei_data.xml") Then
Dim save As New System.Xml.Serialization.XmlSerializer(GetType (savefile))
Dim fs As New System.IO.FileStream _(filename,System.IO.FileMode.Open)
Dim cls As savefile = CType(save.Deserialize(fs), savefile)
fs.Close()

Else
MessageBox.Show("ディレクトリは存在しません")
 End If
End Sub
  • 題名: Re[6]: データの保持
  • 著者: 悩み中の人
  • 日時: 2009/07/14 16:33:14
  • ID: 24944
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
すいません、送信時の調子がおかしくて送信を何回もやっていたせいで多重書き込みになっていたようねですね。
すいません。

DOBON.NET | プログラミング道 | プログラミング掲示板