Проверка и редактирование значения в изолированном хранилище в Windows Phone 7 - PullRequest
1 голос
/ 03 августа 2011

Я пытаюсь проверить слово «Тревога» в моем изолированном хранилище перед сохранением.

Если слово «Тревога» существует, я заменю «Тревога» на «Тревога 1», тогда, если «Тревога 1"is exist изменится на" Alarm2 ".

Как мне это сделать?

Ниже приведен мой код, но он не работает:

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(" ", "_");
}

Ответы [ 2 ]

0 голосов
/ 03 августа 2011

попробуйте это:

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 голосов
/ 03 августа 2011

Вы можете использовать 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();
        }
    }
}
...