| 
                ■No76550 (vb初心者 さん) に返信 > DataSet(Form1で宣言し、かつxmlファイルを読み込んでいる)を、 > Form2で参照する方法を教えてください。 > (Publicで宣言してみたのですが上手くいきませんでした…)
  「何を」Publicにしましたか?
  いろいろなやり方がありますが、このような場合は、Form2 側に 「DataSet を受け取るための機能」を用意するのが良いとおもいます。
 
  たとえば、Form1 側から   Using f As New Form2( データセットの変数 )    f.ShowDialog(Me) 'モーダル呼び出し   End Using あるいは   Dim f As New Form2( データセットの変数 )   f.Show(Me) 'モードレス呼び出し のように、Form2 のコンストラクタ引数として渡せるようにするため、 『Form2 側のコンストラクタ』に引数を追加して Public Class Form2  Private ds As DataSet  Public Sub New()   Me.New(Nothing)  End Sub  Public Sub New(ByVal ds As DataSet)   Me.ds = ds   InitializeComponent()  End Sub End Class のような実装にしておくとか。
 
  あるいは、Form2 側に「Public Property 何某 As DataSet」のような 『Public なプロパティ』を設けておき、Form1 から、その Form2 のプロパティに対して DataSet をセットしてやるという手もありますね。
 
  > Form2で参照したDataSetを編集し、編集したセルだけxmlファイルに書き込む方法を教えてください。 随分と漠然とした質問ですね…? (^^; 出力する XML は、どのような書式にしたいのでしょうか。
  XML のフォーマットにこだわりが無く、かつ、 編集したセルではなく、編集したレコードの情報でも良いのなら、  '編集結果のみを集めた DataSet を取得  Dim changedData As DataSet = ds.GetChanges()
   'その DataSet の、データ部分のみを XML ファイルに保存  changedData.WriteXml("C:\TEST\sample.xml")
   '「削除された行」や、「更新された行の編集前後の値」まで保持したいなら、こう  'changedData.WriteXml("C:\TEST\sample.xml", XmlWriteMode.DiffGram) などと書けます。
  もっと自由なフォーマットにしたいなら、LINQ で処理するのが良いかも。
  |