連載:VB 6ユーザーのための
これならマスターできるVB 2005超入門

第3回 VB 2005の“My”の便利さに脱帽!

羽山 博
2006/10/25
Page1 Page2 Page3

■フォームのプロパティを保存するには

 アプリケーションの実行終了時にコントロールのプロパティの値を保存し、起動時にプロパティの値を読み出すだけであれば、なんと、コードは1行も書かなくていい。[プロパティ]ウィンドウの一番上にある(ApplicationSettings)という項目の下の(PropertyBindings)という欄で、プロパティと設定項目名を対応付けるだけでいいのだ。

 フォーム上の、ほかのコントロールがない位置をクリックしてから、[プロパティ]ウィンドウの上の方にある(PropertyBindings)の欄の[...]ボタンをクリックしよう(図4)。


図4 (PropertyBindings)欄の[...]ボタンをクリックする
プロパティの値と、それを保存するための設定項目名とを対応付けるために[...]ボタン( )をクリックする。(PropertyBindings)欄( )が表示されていない場合は、その上にある(ApplicationSettings)欄( )の左にある[+]をクリックして、下位の項目を表示すればよい。

 [...]ボタンをクリックすると、プロパティの値と設定項目名とを対応付けるためのダイアログ・ボックスが表示される。ダイアログ・ボックスにはプロパティの一覧が表示されているので、その中からウィンドウの位置を表す[Location]を探し、右側の下矢印ボタンをクリックする。ここで「(新規)」を選べば設定項目との対応付けができる(図5)。


図5 プロパティと対応付ける設定項目名を新規作成する
Locationプロパティの値を保存するための設定項目名を新しく作る。[Location]の欄( )の下矢印ボタンをクリックし、「(新規)」( )をクリックする。

 続いて、図6のようなダイアログ・ボックスが表示されるので、ここで[Name]の欄に設定項目名を入力する。位置を保存するための項目なので、ここでは「Pos」という名前にした。[Scope]の欄では、ユーザーごとの設定項目(User)か、アプリケーションでの設定項目(Application)かが選べるが、取りあえずここでは「User」を選んでおく。


図6 設定項目名を入力する
「Name」の欄に「Pos」と入力した。これで、ウィンドウの位置が「Pos」という名前の設定項目として保存されるようになった。

 実は、Locationプロパティの値を保存することはごく一般的なので、[プロパティ]ウィンドウの(ApplicationSettings)の下位項目には「Location」という欄が用意されている。そこに「Pos」と入力しても構わない。図5でもう一度確認しておくといいだろう。いずれにせよ、この時点で、もうLocationプロパティの値がアプリケーションの終了時に保存され、起動時に読み込まれるようになっている。

 これでウィンドウの位置を保存するための設定ができた。ここでプログラムを実行してみると、初回起動時はデスクトップの左上にフォームが表示される。これは[DefaultValue]の値が「0,0」となっているためだ。続いてウィンドウをドラッグして移動させ、[×]ボタンをクリックしてアプリケーションを終了させる。ここで位置が保存される。次にもう一度プログラムを実行すると、設定が読み出され、先ほど終了させた位置にフォームが表示されるはずだ。

■設定項目の値を利用するには

 保存された設定項目の値は、アプリケーションの起動時に自動的に読み込まれ、Locationプロパティに設定される。この設定項目は(「Pos」という名前でしたね)は、My.Settingsを使ってコードから参照することができる。

 例えば、フォームをロードしたときに、ステータス・バーにウィンドウの位置を表示したいのであれば、フォームのLoadイベント・ハンドラに以下のようなコードを書けばよい。

tsPos.Text = My.Settings.Pos.X & ":" & My.Settings.Pos.Y

 tsPosというのはステータス・ストリップ・コントロール上のラベルである(先ほど追加しましたね)。

 ただし、このプログラムの場合は、ウィンドウを移動したときにもステータス・バーの表示を変えたいので、フォームのMoveイベント・ハンドラにコードを書いた方がよい。Moveイベントはフォームが表示されるときにも発生するので、前回の位置が正しく表示される。念のため、イベント・ハンドラを作成する手順からおさらいしておこう(図7)。


図7 フォームのMoveイベント・ハンドラを作成する
  フォームの、ほかのコントロールがない位置をクリックする。
  [プロパティ]ウィンドウの[イベント]ボタンをクリックする。
  Moveイベントの欄にイベント・ハンドラ名を入力する。ここでは「showPos」という名前にした。

 イベント・ハンドラは図8のようになる。今後は、イベント・ハンドラの作り方については画面で説明せず、コードだけを示すので、ここで完全にマスターしておいてほしい。


図8 イベント・ハンドラにコードを入力する
プロパティを保存するための設定項目Posの値がMy.Settings.Posで参照できる。ここでは、My.Settings.Pos.XはLocation.Xと同じ値であるため、上のコードでLocation.Xを使ってもいいが、My.Settingsで設定項目が参照できることを示すために、このようなコードにした。

 アプリケーションの実行例は、図9のようになる。起動時には、前回終了時の位置にウィンドウが表示され、ステータス・バーに位置が表示される。ウィンドウを移動させれば、ステータス・バーの表示も変わる。[×]をクリックしてアプリケーションを終了させると、設定が保存される。


図9 実行すると、ウィンドウの位置がステータス・バーに表示される
タイトル・バーをドラッグして、ウィンドウの位置を移動させ、ステータス・バーの表示が変わることを確認しよう。いったんアプリケーションを終了させ、再度起動して前回の位置に表示されるかも確認しよう。


 INDEX
  連載:VB 6ユーザーのためのこれならマスターできるVB 2005超入門
  第3回 VB 2005の“My”の便利さに脱帽!
    1.サンプル・プログラム3 − 設定の保存と読み出し
  2.フォームのプロパティを保存するには/設定項目の値を利用するには
    3.プロパティ以外の値の保存/任意のタイミングで保存・読み込み/結び
 
インデックス・ページヘ  「これならマスターできるVB 2005超入門」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)
- PR -

注目のテーマ

業務アプリInsider 記事ランキング

本日 月間
ソリューションFLASH