現在、アドレス帳アプリを作ろうとしています。アプリケーションディレクトリにデフォルトのアドレス帳があるかどうかをロード時にチェックします。存在しない場合、ユーザーは選択したアドレス帳を開くことができます。選択したファイルを現在のファイルとして設定する際に問題があります。新しい連絡先をファイルに追加して追加する2番目のフォームを開くまで、何でもうまくいきます。連絡先は最初のフォームで選択したファイルに追加されますが、この「フォームの追加」を閉じると、現在の xml パスがリセットされ、プログラムは「連絡先の追加」で変更した xml ファイルを開く代わりに、アドレス帳を再度開くように要求します。「連絡先フォームの追加」で xmlCurrentPath を設定しても、連絡先フォームが再度表示された後はクリアされます。これは私のコードです:
Public Class Form2
Private myTable As New DataTable()
Dim path = My.Application.Info.DirectoryPath
Dim xmlDefaultPath As String = path + "\address.xml"
Dim xmlCurrentPath As String
Dim fileDlg As New OpenFileDialog
Public isXml As Boolean = False
'Sets current xml path
Public Sub setCurrentPath(ByVal path As String)
xmlCurrentPath = path
End Sub
Public Sub XmlExistence(ByVal xmlpath As String)
'Checks if current xml path exists and if not then checks if there is a default address book file in root directory
If IsNothing(xmlCurrentPath) Then
If System.IO.File.Exists(xmlpath) Then
xmlCurrentPath = xmlDefaultPath
Else
xmlCurrentPath = ""
End If
End If
End Sub
Public Sub LoadForm(sender As Object, e As EventArgs) Handles Me.Shown
'checks if there is current xml path and if not asks if you want to choose from file
If IsNothing(xmlCurrentPath) Then
XmlExistence(xmlDefaultPath)
If Not xmlCurrentPath = "" Then
CreateTable()
LoadXml(xmlCurrentPath)
Else
CreateTable()
Dim addressfile = MessageBox.Show("Brak pliku adresów w katalogu głównym programu. Czy chcesz wybrać plik z dysku ? Jeśli wybierzesz nie zostanie utworzony nowy plik.", "Pytanie", MessageBoxButtons.YesNo)
If addressfile = Windows.Forms.DialogResult.Yes Then
fileDlg.Title = "Otwórz plik adresów"
fileDlg.Filter = "XML Files|*.xml"
fileDlg.ShowDialog()
xmlCurrentPath = fileDlg.FileName
LoadXml(xmlCurrentPath)
End If
End If
End If
End Sub
以前に選択したアドレス帳に新しい連絡先が追加された後、連絡先の追加フォームが閉じられたときに、アドレス帳フォームにこのアドレス帳が再び表示されるようにするにはどうすればよいですか。