ApplicationSettingsの謎 BearCatのモバイルと音楽のある生活

ApplicationSettingsの謎のページです。

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

--年--月--日 トラックバック(-) コメント(-)

ApplicationSettingsの謎

Windows.Formsアプリケーションで、Controlのプロパティに「ApplicationSettings」という項目があります。
ApplicationSettingsプロパティ

Controlのプロパティを永続化する手段として提供されており、プロパティの内容は[アプリケーション名].exe.configファイルにXML形式で格納されます。
初期値は、アプリケーションのプロパティで設定できます。
※[アプリケーション名]の部分には作成したアプリケーション名が入ります
例えば、「Formオブジェクトの位置を記憶して、次回起動した時に同じ場所に表示したい」といった状況で使えます。

で、作成中のアプリケーションでApplicationSettingsを使って以下の機能を実装しようとしたのですが...
(1) Formの位置を記憶して、次回起動時に同じ位置に表示する
(2) Formのサイズを記憶して、次回起動時に同じ大きさで表示する
FormのSizeプロパティの指定ができない、というより見あたらない。
バインド可能なプロパティ

いろいろ探してみると、以下のような情報に当たりました。C#ではなくVBでの情報ですが、そこは気にしないことにします。
Visual Basic 2005 での My.Settings の使用
その中に『何らか理由で、Size プロパティはバインド可能なプロパティとして表示されません。 これはこのバージョンでの設計上の判断ですが、最終版ではすべてのプロパティがバインドできるようになります。』って記述があります。
最終版って製品版のことだだよね、きっと。で、結局、最終版でも実装されなかった(し忘れたのかも)ってことだよね。
でも、『何らかの理由』って結局なんだったんだろう。とっても気になります。
さらにいえば、Nameプロパティは設定できるようですが、こいつをApplicationSettingsに設定するシチュエーションというのも想像できません。

気を取り直して。
上記の情報では、『プロパティが [property-binding] ウィンドウの一覧に表示されない場合でも、コードを使って同じことを実行できます。』って書いてあるし、コーディングで解決するしかありません。
C#の場合は以下の情報が参考になります。
C# で設定を使用する

アプリケーション設定の「frmMain_Size」にSizeプロパティを格納するとして、以下のコードで「Formのサイズを記憶して、次回起動時に同じ大きさで表示する」ことが実現できました。

/// <summary>
/// フォーム ロード時のイベントハンドラ
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void frmMain_Load(object sender, EventArgs e)
{
    // フォームのサイズを復元する。
    this.Size = ApplicationName.Properties.Settings.Default.frmMain_Size;
}

/// <summary>
/// フォームを閉じた後のイベントハンドラ
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void frmMain_FormClosed(object sender, FormClosedEventArgs e)
{
    // フォームのサイズを保存する。
    ApplicationName.Properties.Settings.Default.frmMain_Size = this.Size;
    // app.configを保存する。
    ApplicationName.Properties.Settings.Default.Save();
}


スポンサーサイト

2007年07月30日 トラックバック(0) コメント(1)

SizeではなくてClientSizeで設定できるのでは

2008年02月10日 URL 編集












管理者にだけ公開する

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。