Застрял на круговой зависимости windows формы C ++ - PullRequest
0 голосов
/ 18 января 2020

Я считаю, что проблема в том, что мой код застрял на циклической зависимости. Я пытаюсь отправить значение из одной формы в другую. В Form1 я объявляю Form2 и открываю ее, и поэтому я не могу объявить Form1 из Form2, и я не знаю, что делать сейчас.

Код:

private: System::Void paieškaToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e)
{
    PaieskaGUI^ paieska = gcnew PaieskaGUI(); //declaring the other form
    paieska->Show(); //opening it when the button is pressed
}

Итак, выше form1, где, когда я нажимаю кнопку, и он открывает форму2. И в коде ниже, который показывает form2, когда я нажимаю кнопку, она объявляет form1 и отправляет ей значение

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) 
{
    String^ mas = textBox1->Text;
    Pagrindinis^ pgrr = gcnew Pagrindinis();
    pgrr->SomeText = mas;
    this->Hide();
}

Я новичок в программировании.

1 Ответ

0 голосов
/ 18 января 2020

Если я правильно понимаю, вы хотите передать значение обратно в исходную форму, а не создавать новый экземпляр. Если это так, то, возможно, рассмотрите возможность установки Parent в форме form2 перед тем, как показывать ее, чтобы вы могли получить первую форму из свойства Parent и затем установить соответствующее значение для нее после приведения ее к соответствующему типу. .

В коде, в котором вы также скрываете вторую форму после нажатия кнопки, намереваетесь ли вы, чтобы форма была просто диалоговым окном, чтобы получить какое-то значение и вернуть его родителю? Если это так, возможно, вы захотите использовать вместо этого ShowDialog, который будет препятствовать взаимодействию с родителем до момента возврата, а затем вы можете использовать экземпляр второй формы из вызывающего метода для доступа к свойствам этой формы. В примере на MSDN для метода Form.ShowDialog показано, как можно получить значение из второй формы в первую форму.

...