2013-07-16 56 views
1

我在VB.Net中有一個多項目解決方案。我有一個自定義的表單,其他表單可以繼承。它在一個名爲「CustomForm」的獨立項目中,沒有特殊的圖形效果,它與通用的Windows窗體相同,只是以不同的方式處理關閉。我有一個名爲Form1的名爲「TestProject1」的項目,它繼承了CustomForm。在第三個項目「TestManager」中,可以從TestProject1添加Form1的實例,並將其所有權設置爲TestManager。我有這樣的設置與內部TestManager中以下代碼:'form'是'項目'中的一種類型,不能用作表達式

Public Shared Sub CreateForm(ByVal frm As CustomForm.CustomForm) 

    frm.Owner = TestManager.TestManager 

    frm.Show() 
End Sub 

但是我得到以下錯誤: 「Form1中」是「TestProject1」一個類型,並且不能用作表達式。

編輯:更多細節:

Form1中有目前不着什麼。想象一下TestManager作爲桌面,在其中添加來自另一個項目的表單。 TestManager引用TestProject1,並使用代碼: CreateForm(TestProject1.Form1),它使用上述方法。現在form1引用並繼承CustomForm。 我輸入代碼的時候顯示這個錯誤,所以我甚至無法構建項目。

+0

這是編譯時錯誤嗎?如果是這樣,它必須來自其他地方,你實際上有'Form1'被使用。你能發佈更多相關的代碼嗎? –

+0

增加了更多信息,如果它不夠,請告訴我。 – TheRyan722

+0

您無法將'TestProject1.Form1'傳遞給'CreateForm()'。您需要創建一個類型爲TestProject.Form1的對象,然後傳遞該對象。 –

回答

4

由於我自己的愚蠢,我監督了這樣一個簡單的錯誤。 我沒有創建表單的對象或實例,這是問題。 只需添加'新'的線。

CreateForm(New TestProject1.Form1()) 
1

這裏有一點幫助。我辦公室的實習遇到了這個問題。原因是:他重載構造函數(可以),但他沒有創建一個默認的構造函數。

看來,如果你想使用你自己的一個類而不發送參數,這是可以的,但如果你想有多個構造函數,並且不添加默認構造函數(沒有參數的那個),那麼這個錯誤會上升。

他正在使用VS 2010 Pro

+0

在Visual Studio 2013中仍然存在同樣的問題。該錯誤消息仍然不是很有幫助。 – BlueMonkMN

相關問題