■75625 / inTopicNo.1) |
FormClosed・FormClosingでの入力内容保存 |
□投稿者/ 赤坂太郎 (1回)-(2015/04/16(Thu) 00:23:25)
|
分類:[VB.NET/VB2005 以降]
Win8.1+VB2010+.NET Framework4.0を使用しています。
メインとなる画面(Form1)から設定画面(Form2)を呼び出し、プログラムの終了時に設定画面に入力された内容をテキストに保存する処理を行っています。
・ここではForm2にはTextBox1というテキスト欄が1つだけあります。
・設定画面は×印をクリックしても画面が終了しないようにしてあります。
Public Class Form1
Private Sub Form1_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
Call textout("FormClosed.txt", Form2.TextBox1.Text)
End Sub
Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
Call textout("FormClosing.txt", Form2.TextBox1.Text)
End Sub
Private Sub textout(ByVal textnam As String, ByVal textval As String)
Dim strDIR As String = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location)
Dim objFS As System.IO.StreamWriter
Try
objFS = New System.IO.StreamWriter(strDIR & "\" & textnam, False)
objFS.Write(textval)
objFS.Close()
Catch exERR As Exception
End Try
End Sub
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Form2.Show(Me)
End Sub
End Class
Public Class Form2
Private Sub Form2_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
If Me.Visible Then
e.Cancel = True
Me.Hide()
End If
End Sub
End Class
メイン画面を×印をクリックして終了した場合、FormClosed.txtにもFormClosing.txtにもきちんと入力内容が保存されるのですが、
メイン画面を終了せずにOSを再起動した場合、FormClosing.txtにしか入力内容が保存されません。
(ただしテキストファイルの更新日時はどちらも更新されます)
https://msdn.microsoft.com/ja-jp/library/system.windows.forms.form.formclosed%28v=vs.110%29.aspx
では「フォームに入力された情報を保存したり」と、FormClosedイベントで保存することを推奨しているようですが、
これを気にせずFormClosingイベントで情報を保存するのが良いのでしょうか。
|
|