2010-02-08 60 views
2

我有引用,我已經一個VB6項目中創建用戶控制的公共程序的問題。引用功能控制

一個簡單的例子(EXE),我有一個按鈕和一個用戶控制的一種形式:

Option Explicit 

Private Sub Command1_Click() 
    UserControl1.updateMessage ("TIME NOW: " & DateTime.Time) 
End Sub 

用戶控件代碼如下:

Option Explicit 

Public Sub updateMessage(ByVal newMessage As String) 
    Label1.Caption = newMessage 
End Sub 

此exe編譯和作品很好,當我在窗體中輸入updateMessage時,它會出現在智能感知列表中,並具有適當的要求。我遇到的問題是當我想要「轉到updateMessage的定義」時,而不是轉到用戶控件中代碼的相應部分,該消息總是返回:

「無法跳轉到' updateMessage',因爲它位於當前未引用的庫'Unknown1'中。「

其中不時「Unkown1」的變化的編號後綴。

看來,如果有這一程序沒有參考的話,那就不會出現在智能感知和項目不應該編譯。當用MZTools運行時(儘管這個錯誤出現與插件安裝無關),我可以進入updateMessage過程,並使用它來查找調用該函數的所有過程,因此兩者之間的鏈接應該存在(雖然我我不確定MZTools是否使用文本匹配模式發現)。

如果有任何人能在這個問題上閃耀光芒,那將是非常讚賞,並保存該VB6開發窮很多的麻煩!

我有VB6的安裝SP6(建立9782)和我在HP dx2400運行XP SP3。

回答

0

是的,這是非常討厭,我相信這是在VB6的錯誤。我這樣說是因爲,如果您在對象瀏覽器中找到updateMessage方法並雙擊它,那麼您將進入定義。所以,編譯器實際上確實是知道定義在哪裏,它只是拒絕把你帶到Shift + F2。

+0

呃,我希望這只是我的構建/參考或什麼。這不是世界末日,但是減緩了我不得不每次搜索名字的速度。我也懷疑這與它將UserControls視爲一個編譯控件的事實有關,並且不會嘗試訪問它們的源代碼。有什麼想法嗎? – 2010-02-09 11:54:08

+0

我並不是真正瞭解UserControls的低級機制,我只是知道他們有時很煩人。我發現這個特別的問題非常令人討厭,我經常發現自己使用名爲Project Analyzer的工具瀏覽代碼http://www.aivosto.com/project/project.html它能夠帶我到UC成員定義,只需點擊他們。我們在5年或6年前購買了企業版(第7版),我發現它確實很有幫助。自那時起,價格一路飆升,但如果您知道您將在VB6中進行大量工作,您可能需要檢查一下。 – raven 2010-02-09 15:21:31