Задать форму как исключение родительского броска. "Элемент управления верхнего уровня не может быть добавлен в элемент управления"

Я хочу получить доступ к переменным формы из другой формы. При нажатии кнопки внутри моей основной формы я хочу установить мою основную форму как родительскую, а затем вызвать другую форму (дочернюю форму), в которой я буду обращаться к переменным основной формы. Мой обработчик кликов выглядит следующим образом:

private void btnSystem_Click(object sender, EventArgs e)
{
    Form_EnterPassword EP = new Form_EnterPassword();
    EP.Parent = this;        //error: Top-level control cannot be added to a control
    EP.ShowDialog();
}

Он компилируется без ошибок. Однако, когда я запускаю основную форму и нажимаю кнопку "Система", это исключает меня. Я делаю что-то подобное в другом коде (не моем) с тем же нажатием кнопки и не вижу ошибки (только с установкой Main form как Parent).

Что я делаю неправильно? Есть что-то в главном коде, который вызывает это?

Ответ 1

Лучший способ - использовать EP.ShowDialog(this), а затем использовать свойство Owner.

Ответ 2

Вам нужно, чтобы свойство EP.TopLevel было установлено в false. Это позволит вам установить родительский элемент.

Дальнейшее чтение.

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

Ответ 3

OK, видимо, способ сделать это - позвонить

Form_Child.ShowDialog(this)

а затем я могу позвонить

FromParent_aVariable = ((Form_Parent)this.Owner).aVariable;

или если я определяю aVariable в пространстве имен Properties, тогда

FromParent_aVariable = NameSpace.Properties.Settings.Default.aVariable;

существует два способа.

Ответ 4

Написав этот путь, сделайте диалог в центре родительской формы.

   Form_Child.StartPosition = FormStartPosition.CenterParent;
   Form_Child.ShowDialog(this);