Goran Bibic Ответов: 2

Получить значение из другой формы в уже открытой форме1


My code work...problem is ...
Form 1 button click open Form2 and find value, when return value open new form not existing? Some help
I think it is problem line 11..12...


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

//form1:    
 public partial class Form1 : Form    
    {    
        Form2 f2;    
        public Form1()    
        {    
            InitializeComponent();    
        }    
        private void button1_Click(object sender, EventArgs e)    
        {    
            if (f2 == null)    
                f2 = new Form2();    
            f2.ValueFromForm1(textBox1.Text);    
            f2.Show();    
        }    
    }    
//form2:    
 public partial class Form2 : Form    
    {    
        public Form2()    
        {    
            InitializeComponent();    
        }    
        public void ValueFromForm1(string value)    
        {    
            textBox1.Text = value;    
        }    
    }    

sswapniljadhav

Попробуйте использовать ссылочную переменную.

2 Ответов

Рейтинг:
2

OriginalGriff

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

Form2 f2 = null;
private void button1_Click(object sender, EventArgs e)
    {
    if (f2 == null)
        {
        f2 = new Form2();
        f2.FormClosed += f2_FormClosed;
        }
    f2.ValueFromForm1(textBox1.Text);
    f2.Show();
    }

void f2_FormClosed(object sender, FormClosedEventArgs e)
    {
    f2 = null;
    }
И это, вероятно, начнет работать.


Goran Bibic

Не работает....теперь снова откройте form1 и не имейте значения form textbox1

OriginalGriff

Ожидаете ли вы, что изменения, внесенные в Form2, непосредственно повлияют на текстовое поле в Form1?

Goran Bibic

Да,

Goran Bibic

Просто от значения текстового поля Form2 до form1

OriginalGriff

Это не происходит автоматически.
Если вы хотите, чтобы это произошло, то смотрите здесь:

https://www.codeproject.com/Tips/548131/Transferring-information-between-two-forms-Part

Рейтинг:
1

cakabo.clk

Привет, мое решение

private void Form1_Load(object sender, EventArgs e)
        {
            new Form2().Show();
        }

        private void btngetdata_Click(object sender, EventArgs e)
        {
            foreach (Form frm in Application.OpenForms)
            {
                if (frm is Form2)
                {
                    this.Text = ((Form2)frm).textBox1.Text;
                }
            }
        }

только модификаторы form2 textbox1 должны быть общедоступными


Goran Bibic

Откройте форму form1 с поля textbox1, с наименованием "button1" нажать Открыть Form2, от 2-х нужно раскладки данных в форму form1 и закрыть форму Form2