2013-05-01 63 views
2

我有一個表單,它自己工作正常,但我想將其添加到mdi父窗體。彈出窗口給出了在C#中的mdi窗體上的錯誤

問題是我彈出一個小表單,詢問信息,然後將信息傳遞給原始表單。

我用這個彈出形式:

Form2 fm = new Form2(); 

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

我對form2第一行(彈出形式)得到一個錯誤:

Form1 fm2 = (Form1)this.Owner; 

fm2.lbText = this.textBox1.Text; 

同樣,這一切工作正常如果form1是獨立的形式;但如果我使它成爲一個孩子形式,我收到此錯誤,當我點擊確定form2返回到form1

Message =無法強制類型'Partsbuddy2._0.Menu'的對象輸入'Partsbuddy2._0.Form1'。

+2

我不會讓'form2'負責改變'form1'中的UI。讓'form1'像你一樣實例化'form2',然後如果結果是DialogResult.OK,'form1'就可以在處理它之前使用'form2'實例所需的東西。如果你需要'form2'中的某些東西,則爲它創建一個公共屬性(使用getter/setter),並從'form1'中引用它。 – 2013-05-01 01:14:07

回答

4

this.Owner顯然不是窗體,而是菜單。顯然,當你切換到MDI

除了使用Owner財產所發生的奇怪的事情之一,你可以將自己的屬性添加到Form2,包含參照車主形式:

public Form OwnerForm {get; set;} 

和然後創建新的Form2例如,使用的時候:

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

,並在Form2您使用它來訪問Form1

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

工作就像一個魅力感謝! – Krbaugh 2013-05-01 02:15:19