2009-08-29 5 views
4

Visual Studio 2008でVisual Basic .NETでWindowsフォームアプリケーションを開発しています。VB.NET:実行時にラベルを作成し、ラベルに適用する方法

ユーザー設定に基づいて実行時にフォントそれらをラベルに適用します。

両方simplierのユーザーインターフェースのために、と同じフォントを使用するために必要な複数のマシン間での互換性のために、私はInstalledFontCollectionが、選択された数に設定しますボタンのセットを使用しないます私がすべてのマシン(Verdanaのようなフォント)に存在することを知っているフォント。

私は、フォントを作成するモジュール上でパブリックサブを作成する必要がありますが、コードの作成方法はわかりません。また、スタイルを設定する4つのチェックボックス、太字、斜体、アンダーライン、およびストライクアウトもあります。

これはどのようにコードする必要がありますか? SomeLabel.Font.Boldプロパティは読み取り専用で、Times New Romanのような文字列をFontFamilyタイプに変換するときに問題があるようです。事前に

Dim NewFontFamily As FontFamily = "Times New Roman" 

おかげで同様

(それはちょうどそれはそれを行うことができなかったと言います)。

答えて

8

これはあなたのフォントの問題を解決する必要があります

Label1.Font = New Drawing.Font("Times New Roman", _ 
           16, _ 
           FontStyle.Bold or FontStyle.Italic) 

MSDN documentation on Font property here

次のようになります。このフォントを作成する機能のための可能な実装:

Public Function CreateFont(ByVal fontName As String, _ 
          ByVal fontSize As Integer, _ 
          ByVal isBold As Boolean, _ 
          ByVal isItalic As Boolean, _ 
          ByVal isStrikeout As Boolean) As Drawing.Font 

    Dim styles As FontStyle = FontStyle.Regular 

    If (isBold) Then 
     styles = styles Or FontStyle.Bold 
    End If 

    If (isItalic) Then 
     styles = styles Or FontStyle.Italic 
    End If 

    If (isStrikeout) Then 
     styles = styles Or FontStyle.Strikeout 
    End If 

    Dim newFont As New Drawing.Font(fontName, fontSize, styles) 
    Return newFont 

End Function 

フォントがあること、不変です一度作成されると更新できないことを意味します。したがって、あなたが気づいたすべての読み取り専用のプロパティ。

+0

ありがとうございます! =)それは私の問題を解決しました! –

+0

それが他人を助けるかもしれない場合に備えて、私がしたのは、私が変更したかった値を除いて、前のフォントの情報をそのまま使って次のものを作ることでした。 私は、VB.NETが単一のプロパティを変更するように頼んだときに、すべての繰り返しコーディングを行っただけでは簡単だと思っていましたが、それはすでに簡単です。 = P –