気楽なソフト工房

プログラミングについていろいろな記事を書いています。



mykonos2008

Author:mykonos2008
システムエンジニアとして働いている30代の会社員です。
仕事や趣味でプログラムを書いている方の役に立つ記事を書いていきたいと思っています。
ご意見、ご感想はこちらまで
If you are an english speaker,Please visit my english blog.

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
随分、久しぶりにC#のアプリを開発していて、ふと思い出したのですが、以前の記事で、
アプリケーションの設定をオブジェクトのシリアライズを使用して、XMLファイルに保存する方法を紹介しました。

現在、ちょっとしたアプリをWPFで開発していて、TextBoxなどに入力された内容を設定ファイルに保存しておきたいなと思って、
オブジェクトのシリアライズの方法でやろうかと思ったのですが、もっと簡単な方法が無いかと調べました。
もう、皆さんご存知だと思いますが、Properties.Settings.Defaultを使用する方法です。

ソリューションエクスプローラでプロジェクトのプロパティを選んで、「設定」を選択します。
そこで以下の画面から、アプリケーション内で、使用できるプロパティを登録することが出来ます。


スコープには、「アプリケーション」と「ユーザ」を指定できますが、
今回のようにユーザの入力内容を保存したりしたい場合は、ユーザを選択します。
値は、それぞれの項目のデフォルト値になります。一度ユーザが入力した内容を
保存した場合は、その値で上書きされます。
WPFではXAMLからBindingを利用してこれらのプロパティを利用することが出来ます。

<Window x:Class="Test.MainWindow"
   xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
   xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
   xmlns:p="clr-namespace:Test.Properties" ・・これ、忘れずに。(Testのところはプロジェクトの名前空間)
   Title="MainWindow" Height="429" Width="619"
   Closing="Window_Closing"/>
<TextBox Text="{Binding Source={x:Static p:Settings.Default}, 
          Path=User, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" />

ModeにTwoWay、またはOneWayToSourceを設定することで、ユーザが入力した内容を
プロパティに反映することが出来ます。
※デフォルトの動作では、コントロールがフォーカスを失った時に、反映されます。

最後に、ウィンドウが閉じる時にプロパティの内容をローカルファイルに保存する処理を記述します。

  private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
  {
     Properties.Settings.Default.Save();            
  }
スポンサーサイト
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。