Получить значение comboBox из другой формы в C#



У меня есть 2 формы, в Form1 есть кнопка, которая покажет Form2. в Form2 у меня есть comboBox. После выбора элемента из comboBox, пользователь может нажать кнопку, чтобы отправить значение comboBox в Form1 и Form2 закроется.



Вот мой код:



Форма 1:



private void Button1_Click(object sender, EventArgs e)
{
Form2 frm2 = new Form2();
frm2.ShowDialog();
}


Форма 2:



private void Button1_Click(object sender, EventArgs e)
{
Form1 frm1 = new Form1();
frm1.textBox1.Text = Convert.ToString(comboBox1.SelectedValue);

this.DialogResult = DialogResult.OK;
}


Но я значение comboBox не появляется в текстовом поле на Form1saas

1159   5  

5 ответов:

Вы пытаетесь установить значение в поле combobox новой формы, потому что вы создаете его здесь:

Form1 frm1 = new Form1();

Вы должны передать ссылку на экземпляр Form1 в Form2 (через конструктор или поле члена).

Правильный способ сделать это-добавить закрытое поле члена типа Form1 в класс Form2, добавить параметр в конструктор Form2 и инициализировать его при вызове конструктора:

var form2 = new Form2(this);

Затем ссылайтесь на поле члена.

Вы должны отправить рефренс этого объекта в новую форму.

Форма 1:

private void Button1_Click(object sender, EventArgs e)
{
    Form2 frm2 = new Form2(this);
    frm2.ShowDialog();
}

Форма 2:

Form _parentForm;

public Form2(Form frm)
{
     _parentForm = frm;
}

private void Button1_Click(object sender, EventArgs e)
{
    _parentForm.textBox1.Text = Convert.ToString(comboBox1.SelectedValue);

    this.DialogResult = DialogResult.OK;
}

Попробуйте это на вашем событии нажатия кнопки:

TextBox txt = (Form1)this.Owner.Textbox1;
txt.Text = combobox1.Text;
this.Close();

Попробуйте этот код.

Форма 1:

    public void SetValue(string str)
    {
        textBox1.Text = str;
    }

    private void button1_Click(object sender, EventArgs e)
    {
        Form2 frm2 = new Form2(this);
        frm2.Show();
    }

Форма 2:

Только для чтения Form1 _ownerForm;

    public Form2(Form1 ownerForm)
    {
        InitializeComponent();
        this._ownerForm = ownerForm;
    }

    private void button1_Click(object sender, EventArgs e)
    {
        string selectedText = comboBox1.SelectedItem.ToString();
        this._ownerForm.SetValue(selectedText);
        this.Close();
    }

Можно задать свойство modifiers в текстовом поле. Эта собственность должна быть общедоступной.

Форма 2 : '

public Form2()`
{
  InitializeComponent(); 
}

 private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
  Form1 frm = (Form1)Application.OpenForms["Form1"];
  frm.textBox1.Text = comboBox1.Text; this.Close(); 
}

Comments

    Ничего не найдено.