Falen1234 Ответов: 1

Как сохранить значения меток?


Я создал программу, которая выполняет математические операции и помещает результаты в метки. Теперь я хочу, чтобы эти метки сохраняли значения, поэтому, когда я выхожу из программы и запускаю ее снова, результаты в метках должны оставаться такими же, как и до того, как я ее закрыл. По какой-то причине я могу сохранить только одну метку, а когда я пытаюсь сохранить другую, она просто копирует значение первой. Так как же сохранить все этикетки по отдельности?

Что я уже пробовал:

private void Form1_FormClosed(object sender, FormClosedEventArgs e)
        {
            Properties.Settings.Default.label = label1.Text;
            Properties.Settings.Default.label = label2.Text;
            Properties.Settings.Default.Save();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            label2.Text = Properties.Settings.Default.label;
            label1.Text = Properties.Settings.Default.label;
        }

1 Ответов

Рейтинг:
7

Eric Lynch

Короткий ответ...у вас есть две ценности. Чтобы сохранить/извлечь их, вам нужны две настройки. В настоящее время у вас есть только один. В случае, если это не ясно, я уточню.

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

Иногда полезно играть в ролевые игры, притворяясь, что вы компьютер. Итак, давайте рассмотрим пару строк из вашего кода.

label2.Text = Properties.Settings.Default.Label;
label1.Text = Properties.Settings.Default.Label;

С вашей точки зрения, вы ожидаете двух различных значений для label1.Text и label2.Text Тем не менее, вы назначаете одну и ту же "вещь" им обоим: Properties.Settings.Default.Label.

Представьте себя в роли компьютера, Как бы вы это поняли?

С этой новой точки зрения, как компьютер, вас попросили идентичную "вещь" (Properties.Settings.Default.Label) дважды.

Что бы ты сделал? Вероятно, то, что делает компьютер...возвращает точно то же самое дважды. Так, label1.Text и label2.Text получите точно такое же значение Properties.Settings.Default.Label Если вы честно представляете себя компьютером, что еще вы можете сделать?

Итак, как вы могли бы это исправить? Может быть, вы могли бы попросить компьютер хранить и извлекать два разные настройки? Чтобы сделать это, вам нужно будет дать каждому из этих двух параметров разные имена.

В противном случае, например, когда вы кричите "Джон" в переполненной комнате, вы, вероятно, получите путаные ответы от нескольких людей. Или, в барах в некоторых странах, вы можете получить направление в туалет :)

Итак, рассмотрим тонкую разницу между двумя предыдущими строками и следующими двумя строками:
label2.Text = Properties.Settings.Default.Label2;
label1.Text = Properties.Settings.Default.Label1;

Здесь у нас есть два разных названия для двух разных настроек. Мы извлекаем каждую из настроек отдельно. Чтобы завершить исправление, нам также нужно будет хранить их отдельно.

Короче говоря, вы сохраняете/извлекаете две настройки. Итак, вам нужно включить два разделять настройки, а не только одна.

Надеюсь, это поможет. Удачи вам!


Falen1234

Теперь я понял, что это работает, большое вам спасибо!

Eric Lynch

Всегда пожалуйста...рад, что смог помочь :)