Save & Load

ページの状態を ApplicationDataContainer で退避/復元します。

前田稔(Maeda Minoru)の超初心者のプログラム入門

Save & Load

  1. Windows8 では、システムによって現在作業中のページが中断されることがあります。
    そのとき、ページの状態を保存して復元する機能が用意されています。
    BasicPage を組み込むと BasicPage1.xaml.cs に LoadState() と SaveState() が組み込まれます。
    ここでは、ApplicationDataContainer を利用して、ページの状態を退避/復元します。
    pageState と違って、こちらはプログラムを終了しても復元されます。
  2. ページの状態を保存するメソッドが SaveState() で、保存した状態に復元するメソッドが LoadState() です。
    最初に Save, Load をサポートしなかったらどうなるかを確認して下さい。
    Hello NAME を参照して、GCM, LCM を計算するプログラムを起動します。
    data1, data2 をタイプして結果を表示した状態で終了します。(終了は、マウスをページの上部から下部にドラッグします)
    タイル(アイコン)をクリックしてプログラムを再起動すると、タイプしたデータや実行結果は失われています。
  3. GCM, LCM の計算に変えて、減算を行うアプリケーションを材材にしました。
    BasicPage1 のボタンクリック(Button_Click)で減算をして結果を表示します。
    data1, data2 がデータをタイプ入力する TextBox で、ans が結果を表示する TextBox です。
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            int d1, d2, comp;
            d1 = int.Parse(data1.Text);
            d2 = int.Parse(data2.Text);
            comp = d1-d2;
            ans.Text = comp.ToString();
        }
        
  4. Page の状態を保存する SaveState() メソッドです。
    SaveState() でページの状態を保存して、次にこのページが参照されたときに LoadState() で復元します。
    タイプ入力された data1, data2 を保存しています。
        protected override void SaveState(Dictionary<String, Object> pageState)
        {
            Windows.Storage.ApplicationDataContainer localSettings = 
                Windows.Storage.ApplicationData.Current.LocalSettings;
            localSettings.Values["Data1"] = data1.Text;
            localSettings.Values["Data2"] = data2.Text;
        }
        
  5. Page の状態を復元する LoadState() メソッドです。
    SaveState() で保存した情報を元にページを復元します。
        protected override void LoadState(Object navigationParameter, Dictionary<String, Object> pageState)
        {
            Windows.Storage.ApplicationDataContainer localSettings =
                Windows.Storage.ApplicationData.Current.LocalSettings;
            if (localSettings.Values.ContainsKey("Data1"))
            {
                data1.Text = localSettings.Values["Data1"].ToString();
            }
            if (localSettings.Values.ContainsKey("Data2"))
            {
                data2.Text = localSettings.Values["Data2"].ToString();
            }
        }       
        
  6. LoadState() が機能するのは、次の場合です。
    1. 初めてこのページが参照されます。
      SaveState() が一度も実行されていないので、データは保存されていません。
    2. 他のページに Navigate したときに SaveState() が呼ばれてデータが保存されます。
    3. 次に、このページが参照されたとき LoadState() が呼ばれてページが復元されます。
  7. SaveState(), LoadState() の実行を確認します。
    data1, data2 をタイプして結果を表示した状態で、一度 MainPage に戻ります。
    このとき SaveState() が呼ばれてデータが保存されます。
    再び BasicPage に Navigate すると data1, data2 が復元されます。
    プログラムを終了します。(終了は、マウスをページの上部から下部にドラッグします)
    タイル(アイコン)をクリックしてプログラムを再起動すると、タイプしたデータが復元されています。

超初心者のプログラム入門(C# Frame Work)