2009-06-24 52 views
5

我需要維護幾個VB6應用程序,並且在枚舉名稱時我遇到了一個奇怪的問題。 VB6中的Intellisense應該工作的方式是,如果我的變量名稱被定義爲字符串Dim Abraxis,並且在編碼時鍵入abraxis,IDE會在我離開單詞時將其更改爲Abraxis。然而,我發現,如果我有一個枚舉設立這樣的,例如:VB6 IDE正在改變枚舉名稱的情況

Public Enum tiErrorEnum 
    tiNone = 0 
    tiWarning 
    tiError 
    tiDupDoc 
End Enum 

我用的是枚舉的一個在一份聲明中,如

ErrorNum = tinone 

期待套管由IDE修復,它不會將tinone更改爲tiNone,但它確實將enum成員的def更改爲tinone!完全倒退!

是否有解決方法?

回答

12

是的,有。這看起來有點奇怪,你可能想評論你爲什麼在代碼中這樣做,所以未來的開發者不會爲此感到困惑,但這就是你想要做的。將枚舉添加爲編譯器指令代碼塊中的公共項(因此編譯器當然無法看到它)。您應該直接在枚舉聲明下執行此操作,如下所示:

Public Enum tiErrorEnum 
    tiNone = 0 
    tiWarning 
    tiError 
    tiDupDoc 
End Enum 
#If False Then 
    Public tiNone 
    Public tiWarning 
    Public tiError 
    Public tiDupDoc 
#End If 

簡單。 IDE將正確識別並保存枚舉名稱,編譯器將忽略該塊。

+0

+1 - 希望我想到了他們幾年前的所有 – Kev 2009-06-24 16:49:46

1

這是編輯器中的一個錯誤。我似乎記得,如果鍵入枚舉的名稱而不是使用智能感知,它會更改聲明中枚舉值名稱的大小寫。

1

訣竅是要始終符合您的枚舉:然後

tiErrorEnum.tiDupDoc 

智能感知將正確列出枚舉按點之後。如果枚舉的名稱很好,我認爲這也有助於代碼的可讀性。