передача данных через 3 класса, принимающих выбранные значения из 1 и вводящих в текстовое поле другого

#c# #winforms

#c# #winforms

Вопрос:

Хорошо, я беру информацию на основе выделенного текста в выпадающем списке, передавая ее в текстовое поле в другой форме.

У меня есть класс, называемый переменными

 public class variables
{
    public string Design { get; set; }
    public string Classnum { get; set; }
}
  

то есть получение информации от пользовательских выборов в полях со списком
Это в другом классе под названием home

 private void cbfanclass_SelectedIndexChanged(object sender, EventArgs e)
{
    var.Design = cbdesigntype.Text.ToString();
}
  

Когда я использую точку останова, я вижу, что var.Design содержит правильные данные.

моя проблема начинается, когда я отправляю его в свой 3-й класс

 public partial class DesignPar : Form
{
    public variables var = new variables();

    public DesignPar()
    {
        InitializeComponent();
    }

    private void DesignPar_Load(object sender, EventArgs e)
    {
    }


    private void textBox1_TextChanged(object sender, EventArgs e)
    {
        textBox2.Text = var.Design;
    }

    private void textBox2_TextChanged(object sender, EventArgs e)
    {
    }
}
  

Я введу данные в текстовое поле 1, чтобы активировать событие, но в текстовом поле 2 ничего не появляется, и с помощью break это показывает, что var.design//textbox 2 просто «не null, а»»
итак, мой вопрос, очевидно, в том, что я где-то неправильно передаю данные

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

1. Позвольте мне посмотреть, где вы создаете экземпляр DesignPar формы.

Ответ №1:

это потому, что вы создаете новый экземпляр класса переменных

вы должны создать частное свойство в DesignPar() следующим образом

 private string design {get; set;}
  

и добавьте перегруженный конструктор, принимающий параметр

и передайте ему параметр этого конструктора из класса home

вот так

DesignPar(cbdesigntype.Text.toString())

и в вашем перегруженном конструкторе присвоите значение

 DesignPar(string design)
{
  this.design = design;
}
  

надеюсь, это поможет

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

1. Спасибо, и оголите меня, но куда именно я должен поместить DesignPar(cbdesigntype.Text. toString())

2. взгляните на эту ссылку, она поможет вам social.msdn.microsoft.com/Forums/windows/en-US /…

Ответ №2:

Предположим, что какое-то нажатие кнопки запускает вашу форму DesignPar…

     private void button1_Click(object sender, EventArgs e)
    {
        using (DesignPar form = new DesignPar())
        {
            form.var = var;
            form.ShowDialog();

            var = form.var;
        }
    }
  

Теперь в DesignPar…

 public partial class DesignPar : Form
{
    public variables var = null;
    private void textBox1_TextChanged(object sender, EventArgs e)
    {
        if (var == null)
            var = new variables();
        textBox2.Text = var.Design;
    }
}