2011-08-03 7 views
1

保存する前に、隔離されたストレージ内の単語「アラーム」をチェックしようとしています。Windowsの電話機で隔離されたストレージの値を確認および編集する

「アラーム」という単語が存在する場合、「アラーム」を「アラーム1」に変更し、「アラーム1」が存在する場合は「アラーム2」に変更されます。

どうすればいいですか?以下は

私のコードですが、それが動作していません。

if (labelTextBox.Text == "") 
{ 
    try 
    { 
     using (IsolatedStorageFile storage = IsolatedStorageFile.GetUserStoreForApplication()) 
     { 

      foreach (string label in storage.GetFileNames("*")) 
      { 
       MessageBox.Show(label); 
      } 
     } 
    } 
    catch (Exception) 
    { 
    } 

    int i = 0; 
    i++; 
    labelTextBox.Text = "Alarm" + i; 
    alarmLabel = (labelTextBox.Text.ToString()).Replace(" ", "_"); 
} 
+0

「アラーム」という名前のファイルが存在するかどうかを確認しますか?またはIS内のファイルに「アラーム」というテキストが含まれている場合 –

+0

何か「アラーム」が存在する –

+0

「アラーム」が存在する場合、次は「アラーム1」に置き換えられます。 –

答えて

0

あなたはより多くのオブジェクト(e.r.文字列)の取り扱いのために充当されるIsolatedStorageSettings.ApplicationSettingsを、使用することができます。

using System; 
using System.IO.IsolatedStorage; 
using System.Windows; 
using Microsoft.Phone.Controls; 

namespace SidekickWP7 
{ 
    public partial class Page1 : PhoneApplicationPage 
    { 
     const string MYALARM = "MyAlarm"; 

     public Page1() 
     { 
      InitializeComponent(); 

      Loaded += new RoutedEventHandler(Page1_Loaded); 
     } 

     void Page1_Loaded(object sender, RoutedEventArgs e) 
     { 
      int intAlarm = 0; 

      Int32.TryParse(Load(MYALARM).ToString(), out intAlarm); 

      intAlarm++; 

      MessageBox.Show(intAlarm.ToString()); 

      Save(MYALARM, intAlarm); 
     } 

     private static object Load(string strKey) 
     { 
      object objValue; 

      if (IsolatedStorageSettings.ApplicationSettings.TryGetValue<object>(strKey, out objValue) == false) 
      { 
       objValue = String.Empty; 
      } 

      return objValue; 
     } 

     private static void Save(string strKey, object objValue) 
     { 
      IsolatedStorageSettings.ApplicationSettings[strKey] = objValue; 

      IsolatedStorageSettings.ApplicationSettings.Save(); 
     } 
    } 
} 
0

はこれを試してください:

私はこのクラスを使用する小さなサンプル作ら

using (var store = IsolatedStorageFile.GetUserStoreForApplication()) 
{ 
    int highestNumberFound = -1; 

    foreach (var fileName in store.GetFileNames()) 
    { 
     if (fileName.StartsWith("alarm")) 
     { 
      if (fileName == "alarm") 
      { 
       if (highestNumberFound < 0) 
       { 
        highestNumberFound = 0; 
       } 
      } 
      else if (fileName.Length > 5) 
      { 
       int numb; 

       if (int.TryParse(fileName.Substring(5), out numb)) 
       { 
        if (numb > highestNumberFound) 
        { 
         highestNumberFound = numb; 
        } 
       } 
      } 
     } 
    } 

    string toCreate = "alarm"; 

    if (++highestNumberFound > 0) 
    { 
     toCreate += highestNumberFound.ToString(); 
    } 

    store.CreateFile(toCreate); 
} 

きれいではありませんが、それは動作するはずです。

名前の異なる空のファイルを作成することは、あなたがしようとしていることを達成するための最良の方法ではないことは間違いありません。

+0

こんにちは、私はそれを試してみました。しかし、それもalarm1に達し、alarm1として繰り返し続けます。それは、alarm2、alarm3に移動しませんでした。 –

+0

@ben元のファイルが削除されていないように聞こえます。問題をデバッグするために何をしましたか? –

+0

元のファイルを削除しませんでした。 "alarm"という名前のファイルがある場合、次のファイルは "alarm1"という名前になります。元の「アラーム」はまだそこにあります。申し訳ありません –