значение переменной не передается в другой класс формы c#

#c#

#c#

Вопрос:

когда пользователь нажимает кнопку, переменной ‘choice’ присваивается значение, и мне нужно использовать это значение переменной в другом классе формы, но сохраненное значение переменной не передается в другой класс формы

вот мой код: форма 1:

 public partial class Main : Form
{
   public string choice { get; set; }
   string d1 = "something";

    private void btnD1_Click(object sender, EventArgs e)
    {
        choice = d1;
        this.Hide();
        Form2 f = new Form2();
        f.Show();
    }
}
  

форма 2:

 public partial class Form2 : Form
{
    private void Form2_Load(object sender, EventArgs e)
    {
        Main m = new Main();
        MessageBox.Show("You chose: "   m.choice   " before, now choose again!");
    }
}
  

я помещаю окно сообщения перед тем, как приложение перейдет к следующей форме, и оно показывает «что-то», но когда окно сообщения появляется в новой форме, оно отображает «Вы выбрали: раньше, теперь выберите снова!»
в чем ошибка?
заранее спасибо за помощь

Комментарии:

1. Покажите нам код, как вы устанавливаете choice . Вероятно, вам тоже следует сначала отобразить свою форму.

2. Когда вы выполняете new Main(), старый экземпляр form (в котором вы, вероятно, установили выбор) исчезает. Вам нужно как-то передать исходный контекст или сделать поле статическим.

3. @OndrejSvejdar … я понятия не имею, как, но я сделал свою переменную статической, и теперь она работает! Большое вам спасибо

Ответ №1:

Насколько я понимаю, как описано здесь, Show метод MessageBox возвращает экземпляр DialogResult , который является предполагаемым средством передачи взаимодействия пользователя с вызывающей стороной.

Комментарии:

1. Я думаю, что у него больше проблем с созданием нового экземпляра своего класса данных, а затем ссылкой на новый экземпляр вместо исходного экземпляра, где он установил значение. Трудно сказать, не видя больше его кода.

2. Это вообще не отвечает на вопрос. С окном сообщения проблем нет. Оно отображается точно, но просто содержимое не соответствует ожиданиям.

Ответ №2:

Используйте статическую переменную для хранения данных переменной «Выбор».. MessageBox.Показать(STATICCLS.Выбор)

Комментарии:

1. Вы не должны решать локальную проблему с помощью глобального решения