2014-01-16 138 views
0

我有一個項目,我已經從VB6轉換爲使用Visual Studio 2008 VB.NET。我有一行代碼拋出和運行時出錯,但不能編譯。在VB6中運行良好。代碼:從類型'字體'轉換爲類型'字符串'是無效的VB6到VB.NET

SizingLabel.Font = VB6.FontChangeName(SizingLabel.Font, FromObject.Font) 

的錯誤是:

Conversion from type 'Font' to type 'String' is not valid.

我不知道爲什麼它被拋出InvalidCastException我認爲字體是一個字符串。我嘗試添加.ToString()的一切,但是當我這樣做,我在IDE中得到一個錯誤:

Value of type 'String' cannot be converted to 'System.Drawing.Font'.

可有人請點我在正確的方向?

+0

使用FromObject.Font.FamilyName –

回答

1

在VB.net中,Font屬性返回一個Font類型的對象。若要更改字體分配一個不同的字體對象的屬性,

SizingLabel.Font = new Font(FromObject.Font, FromObject.Font.Style) 

的混亂可能會導致使用屬性爲不同類型的對象比它的名字將表明。如果FromObject.Font是代表一個字體家族,而不是一個字體對象的字符串,那麼這應該工作:

SizingLabel.Font = new Font(FromObject.Font, 10) 

10表示字體的大小。還有一個設置FontStyle的選項。

+0

我試過代碼,我recived以下錯誤:重載決策失敗,因爲沒有可訪問的「新」可以被稱爲無收縮轉換: 「的Public Sub New(familyName作爲字符串,emSize As Single)':參數匹配參數'familyName'從'Object'縮小爲'String'。 'Public Sub New(familyName As String,emSize As Single)':匹配參數'emSize'的參數從'Object'變爲'Single'。 'Public Sub New(family As System.Drawing.FontFamily,emSize As Single)':參數'family'的參數從'Object'縮小到'System.Drawing.FontFamily'。 – nate

+0

我添加了另一個選項。 – tinstaafl

+0

那麼我改變它VB6.FontChangeName(SizingLabel.Font,10)讓它工作。有沒有爲什麼我不必使用VB6.FontChanged?當我使用SizingLabel.Font = new Font(FromObject.Font,10)時,出現錯誤:重載解析失敗,因爲沒有可縮放的轉換就無法調用可訪問的'New' – nate

相關問題