Сохранение значения по умолчанию для текстового поля c # - PullRequest
4 голосов
/ 28 февраля 2010

Я создаю небольшую программу типа калькулятора.

У меня есть текстовое поле, значение которого пользователь может изменить.Это текстовое поле используется в некоторых вычислениях.

Как сохранить значение текстового поля, чтобы при следующем открытии формы текстовое поле содержало это значение.

Например, текстовое поле по умолчанию - 1,5.Пользователь меняет его на 5, а затем закрывает форму.В следующий раз, когда пользователь откроет форму, текстовое поле по умолчанию будет теперь 5, а не 1,5

. Любая помощь будет принята.

Ответы [ 8 ]

7 голосов
/ 28 февраля 2010

Скорее всего, у вас нет формального источника данных, такого как внутренняя база данных. В подобных ситуациях используйте .NET архитектура настроек приложения для сохранения и восстановления настроек приложения между запусками.

0 голосов
/ 05 марта 2010

Другой подход заключается в использовании свойства Application.UserAppDataRegistry .

Вот небольшой пример:

private void LoadSettings()
{
    textBoxOutput.Text = (String)Application.UserAppDataRegistry.GetValue("SomeName", String.Empty);
}

private void SaveSettings()
{
    Application.UserAppDataRegistry.SetValue("SomeName", textBoxOutput.Text);
}
0 голосов
/ 05 марта 2010

публичный частичный класс Form1 { открытая строка defaultValue;

private void form2Open_Click(object sender, EventArgs e)
{
    Form2 f = new Form2();
    if (defaultValue != null)
        f.textBox1.Text = defaultValue;
    f.mainForm = this;
    f.Show();
}

}

публичный частичный класс Form2 { public Form1 mainForm; private void Form2_Closing (отправитель объекта, DontRememberWhatItsCalledEventArgs e) { mainForm.defaultValue = textBox1.Text; } }

0 голосов
/ 28 февраля 2010
public partial class Form1
{
    public string defaultValue;

    private void form2Open_Click(object sender, EventArgs e)
    {
        Form2 f = new Form2();
        if (defaultValue != null)
            f.textBox1.Text = defaultValue;
        f.mainForm = this;
        f.Show();
    }
}

public partial class Form2
{
    public Form1 mainForm;
    private void Form2_Closing(object sender, DontRememberWhatItsCalledEventArgs e)
    {
        mainForm.defaultValue = textBox1.Text;
    }
}

Это метод, который я использую, когда сталкиваюсь с аналогичной проблемой, которая есть у вас. (Я не могу проверить это сейчас, но вы должны увидеть, что должен делать код:))

0 голосов
/ 28 февраля 2010

Я не уверен, что это то, что вам нужно, но когда вы определяете TextBox (через дизайнера), вы можете установить для его свойства Text любое значение. По умолчанию это empty, но может быть 1.5, если вы хотите. Если пользователь снова откроет программу, она будет 1,5, а не последней использованной. То же самое будет, когда вы закроете форму и снова откроете ее. Нет необходимости сохранять значение где-либо еще, так как это глобальное значение, которое вы всегда хотите использовать.

При желании вы можете добавить в MainForm_Load() что-то вроде этого: myTextBox.Text = '1.5';

Оба решения будут работать, только если это постоянное значение, которое вы не хотите менять никогда (в противном случае вам придется повторно развернуть приложение.

0 голосов
/ 28 февраля 2010

И записать окончательный ввод обратно в источник данных

  1. in FormClosed обработчик событий или
  2. обработчик исключений, который принудительно закрывает форму.
0 голосов
/ 28 февраля 2010

Лучший способ сделать это - привязать текстовое поле к источнику данных. Источником данных может быть любая вещь в соответствии с вашими требованиями. например, если вы предпочитаете XML-файл

вот как это работает, используя образец XML-файла, values.xml

<Values>
<default>1.5</default>
.
.
</Values>

здесь показано, как привязать текстовое поле к значению по умолчанию

  string xml = @"<Values><default>1.5</default></Values>";

   XElement x = XElement.Parse(xml);
   var defaultValue = from d in x.Elements("default")
                      select d.Element("default").Value;

   TextBox1.Text = defaultValue;
0 голосов
/ 28 февраля 2010

Вы можете хранить данные в источнике данных, например, :

  1. Текстовый файл
  2. XML-файл
  3. База данных

в методе Form_Load вы можете получить это значение и установить его в текстовом поле. Предположим, вы пишете это в текстовом файле, код будет:

StreamReader re = File.OpenText("MyData.txt");
string input = null;
input = re.ReadLine();
txtFormData.Text = input;
re.close;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...