PR

VB.NET(VB2022)で設定項目を保存して読み出す方法

VB.NET
本記事はプロモーションが含まれています。

こんにちは、ENGかぴです。

VB.NET(Visual Basic 2022)のソリューションエクスプローラーのMy Projectで任意の設定項目を追加することができます。My.Settingsクラスのプロパティを使用すると設定項目の保存と読み込みができます。ComboBoxを使った実装例をまとめました。

Windowsフォームアプリケーション(.NETFramework)を対象としています。以下はVisual Basic 2022をVB2022とします。

VB.NET(VB2022)のデスクトップアプリで動作確認したことを下記リンクにまとめています。

VB.NET(VB2022)のデスクトップアプリ開発でできること

設定項目の保存を確認するアプリ

設定の保存を確認するアプリ
設定の保存を確認するアプリ

本記事は任意の設定項目を追加して動作確認を行います。実装例としてシリアル通信の設定項目をComboBoxで変更できるようにします。シリアル通信を実装する方法は下記記事を参考にしてください。

VB.NET(VB2022)のSerialPortの実装とイベントの追加方法

本記事のソースコードは設定項目の保存を確認するための模擬であるためシリアル通信はできません。フォームを閉じたタイミングで設定項目を保存するようにします。

アプリを再起動しフォームを読み込むと保存した設定項目を読み込んでComboBoxに表示するようにします。

スポンサーリンク

コントロールの実装

コントロールの配置
コントロールの配置

Form1.vb[デザイン]にGroupBox、Label、ComboBoxを追加します。Form1を任意の名称に変更している場合はForm1を変更した名前に置き換えて下さい。

ツールボックスのすべてのWindowsフォームから選択することができますが、GroupBoxはコンテナーからLabelとComboBoxはコモンコントロールから選択することもできます。

最初にGroupBoxを配置します。ツールボックスのGroupBoxを選択するとForm1内でマウスのポインタがGroupBoxのアイコンなります。この状態で左クリックするとGroupBoxが配置できます。左クリックを維持したままマウスのポインタを操作することでサイズを調整しながら配置することもできます。

左クリックである程度のサイズで配置しプロパティを指定して微調整すると効率よく配置できます。

同様にしてGroupBox内にLabel及びComboBoxを配置します。

GroupBox1のTextプロパティを「操作盤」に変更します。Label1~Label6のTextプロパティをそれぞれ「COM No」「BaudRate」「Parity」「StopBits」「DataBits」「Handshake」に変更します。

設定項目を追加する

My Projectに設定値を登録する

設定項目を追加する方法を説明します。ソリューションエクスプローラーの①My Projectをクリックするとアプリの情報画面に遷移します。②の設定を選択すると設定項目を登録する画面に遷移します。③の欄に保存する設定項目を追加します。

名前はソースコードで保存(書き込み)や読み込みを行う際に参照する名前(プロパティ)です。種別はString型やLong型など保存するデータの内容です。本記事ではComboBoxに表示する文字列を保存するためString型を選択します。

スコープはアプリケーションまたはユーザーを選択します。ユーザーが任意の設定項目を追加して使用するためユーザーを選択します。デフォルトでユーザーになってるため変更の必要はありません。

値は初期値に指定する文字列や数値を入力します。指定しない場合はユーザーが保存するまで空白になります。

設定項目の保存と読み込みは上記で追加した名前プロパティの指定で行います。下記で説明していますがMy.Settingsクラスのプロパティを指定して行います。

広告
マイベスト3年連続1位を獲得した実績を持つ実践型のプログラミングスクール

設定項目を保存する

Private Sub SaveData()
    My.Settings.ComNo = ComboBox1.Text
    My.Settings.Baurate = ComboBox2.Text
    My.Settings.Parity = ComboBox3.Text
    My.Settings.StopBits = ComboBox4.Text
    My.Settings.Databits = ComboBox5.Text
    My.Settings.Handshake = ComboBox6.Text
End Sub

My.Settingsクラスに追加した設定項目がプロパティとして選択できるので設定項目に応じたComboBoxのTextプロパティを指定して設定項目を更新します。My.Settingsのプロパティを更新するとアプリ内部で保持されるため設定項目を保存したことになります。

例ではSaveData()関数に保存する設定項目をまとめてイベントでコールできるようにしています。

フォームを閉じた時に発生するフォームのClosedイベントでSaveData()関数をコールすることで設定項目を保存してからフォームが閉じます。

Private Sub Form1_Closed(sender As Object, e As EventArgs) Handles Me.Closed
    SaveData()
End Sub

本記事ではClosedイベントに限定しましたが、ButtonのクリックイベントなどにSaveData()関数を組み込むことで任意のタイミングで設定項目を保存することができます。

広告

設定項目を読み込む

Private Sub ControlInit()
    ComboBox2.Items.Clear()
    ComboBox2.Items.Add("9600")
    ComboBox2.Items.Add("19200")
    ComboBox2.Items.Add("38400")
    ComboBox2.Items.Add("115200")
    ComboBox2.Text = My.Settings.Baurate
End Sub

ControlInit()関数はComboBoxの初期化処理とMy.Settingsクラスのプロパティ指定による設定項目の読み込みを行っています。

ComboBoxのItemsプロパティのClose()メソッドで項目をクリアして、Add()メソッドの引数に選択肢の項目を指定して追加します。

My.Settingsクラスの追加したプロパティを指定すると保存した設定項目を読み込むことができます。Textプロパティに設定項目を指定するタイミングはItemプロパティの前後どのタイミングでも問題ありません。

例ではComboBoxの初期化を行ってからComboBoxのTextプロパティに保存した設定項目を反映しています。Baurate(ボーレート)の初期化を行っているためBaurateプロパティを指定しています。

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

フォームを読み出したときに設定項目が反映されるようにControlInit()関数をコールしています。

スポンサーリンク

動作確認(デバッグ)

デバッグは実際のアプリケーションの動作を模擬して実行するものです。デバッグの開始はエディタ上部の「▶開始」をクリックすると開始します。

動作確認の結果
動作確認の結果

デバッグを開始してフォームが表示されるとComboBox1~ComboBox6に設定項目に追加した値がデフォルトで表示されます。ComboBoxで設定項目を変更した状態でフォームを閉じると設定項目が保存できます。

もう一度デバッグを行うと保存した設定項目が反映されてComboBoxのTextプロパティが前回フォームを閉じたタイミングの設定項目になっていることが確認できます。

設定項目の保存が手軽にできるため使いやすいですが、ログを残すなどデータ量が多くなるものを保存する場合はCSVファイルを作成する方が良い場合もあります。

コードのデバッグを行う場合は、コードエディタでブレークポイントを置くことで一時的にプログラムを停止させることができます。

ブレークポイントでデバッグする方法
ブレークポイントでデバッグする方法

ブレークポイントはコードエディターの最左部分をクリックして●マークが表示されれば設置できています。例ではButton1がクリックされた時に発生したイベントの先頭部分にブレークポイントを置いています。この状態でButton1をクリックするとブレークポイントでプログラムが一時停止します。

F11を押すとステップ実行になるため1行ずつ内容を確認しながらデバッグを行うことができます。上部の「▶続行(C)」をクリックするとブレークポイント状態から通常の動作に復帰します。

PR:(即戦力のスキルを身に着ける:DMM WEBCAMP 学習コース(はじめてのプログラミングコース))

ソースコード全体

以下のソースコードはコンパイルして動作確認をしております。コメントなど細かな部分で間違っていたりやライブラリの更新などにより動作しなくなったりする可能性があります。参考としてお使いいただければと思います。

Public Class Form1

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

    Private Sub ControlInit()

        ComboBox1.Items.Clear()

        For i = 1 To 20
            ComboBox1.Items.Add("COM" & i)
        Next
        ComboBox1.Text = My.Settings.ComNo

        ComboBox2.Items.Clear()
        ComboBox2.Items.Add("4800")
        ComboBox2.Items.Add("9600")
        ComboBox2.Items.Add("19200")
        ComboBox2.Items.Add("38400")
        ComboBox2.Items.Add("57600")
        ComboBox2.Items.Add("115200")
        ComboBox2.Items.Add("230400")
        ComboBox2.Items.Add("460800")
        ComboBox2.Items.Add("921600")
        ComboBox2.Text = My.Settings.Baurate

        ComboBox3.Items.Clear()
        ComboBox3.Items.Add(IO.Ports.Parity.None)
        ComboBox3.Items.Add(IO.Ports.Parity.Odd)
        ComboBox3.Items.Add(IO.Ports.Parity.Even)
        ComboBox3.Items.Add(IO.Ports.Parity.Space)
        ComboBox3.Items.Add(IO.Ports.Parity.Mark)
        ComboBox3.Text = My.Settings.Parity

        ComboBox4.Items.Clear()
        ComboBox4.Items.Add(IO.Ports.StopBits.None)
        ComboBox4.Items.Add(IO.Ports.StopBits.One)
        ComboBox4.Items.Add(IO.Ports.StopBits.OnePointFive)
        ComboBox4.Items.Add(IO.Ports.StopBits.Two)
        ComboBox4.Text = My.Settings.StopBits

        ComboBox5.Items.Clear()
        ComboBox5.Items.Add(7)
        ComboBox5.Items.Add(8)
        ComboBox5.Text = My.Settings.Databits

        ComboBox6.Items.Clear()
        ComboBox6.Items.Add(IO.Ports.Handshake.None)
        ComboBox6.Items.Add(IO.Ports.Handshake.RequestToSend)
        ComboBox6.Items.Add(IO.Ports.Handshake.RequestToSendXOnXOff)
        ComboBox6.Items.Add(IO.Ports.Handshake.XOnXOff)
        ComboBox6.Text = My.Settings.Handshake

    End Sub

    '設定項目を保存する
    Private Sub SaveData()
        My.Settings.ComNo = ComboBox1.Text
        My.Settings.Baurate = ComboBox2.Text
        My.Settings.Parity = ComboBox3.Text
        My.Settings.StopBits = ComboBox4.Text
        My.Settings.Databits = ComboBox5.Text
        My.Settings.Handshake = ComboBox6.Text
    End Sub

    Private Sub Form1_Closed(sender As Object, e As EventArgs) Handles Me.Closed
        SaveData()
    End Sub

End Class

コントロールの番号やイベントハンドラーなどのプロパティ名などを変更している場合はソースコードのイベントハンドラーをお使いのイベントハンドラーに置き換えてください。

本記事の内容を下記記事の内容に組み込むとシリアル通信の条件を保存して使用できるようになります。

VB.NET(VB2022)のSerialPortの実装とイベントの追加方法

同一条件でデバッグする際は設定項目の保存を使用すると便利なことがあります。

関連リンク

VB.NET(VB2022)のデスクトップアプリで動作確認したことを下記リンクにまとめています。

VB.NET(VB2022)のデスクトップアプリ開発でできること

マイクロソフトはVisual Studio以外にもVSCodeという便利なエディターを提供しています。下記リンクではVSCodeのインストールの仕方からC言語開発環境の作り方までをまとめています。

VSCodeをインストールしてC/C++の開発環境を作る

PR:無料トライアル実施中【PC専用】AIスライド資料作成ツールの利用:イルシル

最後まで、読んでいただきありがとうございました。

タイトルとURLをコピーしました