2017-09-04 18 views
0

システムにインストールされているすべてのtruetypeフォントを表示し、すべてのフォントがそれが表すフォントでフォーマットされている、#4.5 Windowsフォームアプリケーション(注:WPFではなく)でコンボボックスを作成したい時間、「Arial」などの形式で)。C#でフォントコンボボックスを作成するには?

これを行う方法?

+0

を設定する必要がありますか? –

+0

はい、クライアントシステム –

+0

に私はあなたがユーザのファイル –

答えて

1

ComboBox.DrawItemのEventHandlerを使用してください。 ComboBox.DrawItemを使用するための

public YourForm() 
{ 
    InitializeComponent(); 

    ComboBoxFonts.DrawItem += ComboBoxFonts_DrawItem;   
    ComboBoxFonts.DataSource = System.Drawing.FontFamily.Families.ToList(); 
} 

private void ComboBoxFonts_DrawItem(object sender, DrawItemEventArgs e) 
{ 
    var comboBox = (ComboBox)sender; 
    var fontFamily = (FontFamily)comboBox.Items[e.Index]; 
    var font = new Font(fontFamily, comboBox.Font.SizeInPoints); 

    e.DrawBackground(); 
    e.Graphics.DrawString(font.Name, font, Brushes.Black, e.Bounds.X, e.Bounds.Y); 
} 

あなたはクライアントシステム上でComboBox.DrawMode = DrawMode.OwnerDrawFixed

0

あなたはSystem.Drawing.FontFamily.Families、あなたが前にここ数年のプロジェクト公表カップル従うことによって、これを達成することができ、この

List<string> fonts = new List<string>(); 

foreach (FontFamily font in System.Drawing.FontFamily.Families) 
{ 
    fonts.Add(font.Name); 
} 

.................. your logic 
+0

はい、これを行うには、フォントの名前だけを使用します。 The'llはこの@EpicKip –

+0

あなたはしかし、フォントを見つけるために名前を使用することができます@AleTheFe ...唯一の問題は、通常のコンボボックスは、(私の知る限り)各項目のフォントを取らないということです – EpicKip

+0

をあるフォーマットできませんまさに私がこれまで考えていたものです: '( –

0

のようなもの、https://www.codeproject.com/Articles/318174/Creating-a-WYSIWYG-font-ComboBox-using-Csharp

を使用することができますしかし、その代わりにそれを行うのは、Narek従うことができますNoreyanの手順とそれ以上を追加するには、コンボボックスからフォントファミリを選択した後にテキストフォントを変更するリッチテキストボックスを使用します。

ここではいくつかのコードスニペット、

using System.Drawing.Text; 
void mainformload(object sender, EventArgs s) 
{ 
    InstalledFontCollection inf=new  InstalledFontCollection(); 
    foreach(Font family font in inf.Families) 
     combobox.Items.Add(font.Name); //filling the font name 
    //get the font name of the rich text box text 
    combobox.Text=this.richtextbox.Font.Name.ToString(); 
    } 
void comboboxselectionchanged(object sender, EventArgs e) 
{ 
    richtextbox.Font=new Font(combobox.text, richtextbox.Font.Size); 
} 
関連する問題