2013-05-01 1 views
2

У меня есть форма, которая отлично работает сама по себе, но я хочу добавить ее в родительскую форму mdi.Всплывающее окно дает ошибку на форме mdi в C#

Проблема в том, что у меня есть небольшая форма, которая появляется, запрашивает информацию, а затем передает информацию в исходную форму.

Я использую это всплывал форму:

Form2 fm = new Form2(); 

if (fm.ShowDialog(this) == DialogResult.OK) 
{ 
    //do stuff 
} 

Я получаю сообщение об ошибке на первой линии form2 (всплывающее форма):

Form1 fm2 = (Form1)this.Owner; 

fm2.lbText = this.textBox1.Text; 

Опять же, это все работает отлично если form1 - отдельная форма; но если я делаю это дочерней формой, я получаю эту ошибку, когда я нажимаю OK на form2, чтобы вернуться к form1.

Сообщение = Невозможно наложить объект типа «Partsbuddy2._0.Menu» на тип «Partsbuddy2._0.Form1».

+2

Я бы не стал 'form2' ответственен за изменение пользовательского интерфейса в' form1'. Имейте 'form1' экземпляр' form2', как и вы, тогда, если результатом является DialogResult.OK, просто используйте 'form1', чтобы он использовал то, что ему нужно, из экземпляра' form2', прежде чем удалять его. Если вам нужно что-то из 'form2', создайте для него общедоступное свойство (с помощью getter/setter) и укажите, что из' form1'. –

ответ

4

это.Интернет, по-видимому, не является формой, а меню. Видимо одна из странных вещей, которые случаются, когда вы изменяете к MDI

Вместо того, чтобы использовать Owner свойства, вы можете добавить свои собственные свойства в Form2, содержащую ссылку на форму владельца:

public Form OwnerForm {get; set;} 

и то при создании нового Form2 экземпляра используйте:

Form2 fm = new Form2() { OwnerForm = this }; 

и в Form2 вы используете это для доступа Form1:

Form1 fm2 = (Form1)this.OwnerForm; 
+0

Работал как шарм СПАСИБО !! – Krbaugh

 Смежные вопросы

  • Нет связанных вопросов^_^