2011-02-02 36 views
0

我得到了這個代碼工作!ParentForm爲null(在表單內的UserControl內的Button中)!

我有一個按鈕在設計時在我的窗體中放在我的UserControl中。一切運作良好,當我在一個按鈕的事件中調用this.ParentForm時,它正確地返回給我(僅)父窗體。

重構後,我將帶有按鈕的UserControl移動到另一個NameSpace,同一段代碼不再起作用。 this.ParentForm現在是NULL

我讀了MSDN網站,它說,只有當控件託管在IE或其他上下文this.ParentForm返回null。但是我只移動了命名空間!

任何人有一個想法?

我不能使用不同的構造函數來傳遞父窗體,因爲在設計時Visual Studio不會渲染窗體。

回答

2

看看包含設計器生成代碼的代碼隱藏文件。在重命名過程中,您可能會對Visual Studio設計器感到困惑,並且它可能會在Form.designer.cs文件中「孤立」您的控件實例。

特別是,查看InitializeComponent方法中的代碼,看看是否可以找到任何創建UserControl實例但不將其添加到容器的代碼,或者將其添加到未添加到的容器表格。

+0

最好的理論我認爲,沒有其他體面的解釋。 – 2011-02-02 07:24:18

3

看看您是否在控件添加到表單之前訪問控件的父窗體。

我的代碼是在用戶控件類初始化時觸發的,但控件尚未添加到父窗體中。

試着把這段代碼放在Control Load事件中。

相關問題