2010-08-06 12 views
31

मैं सिस्टम में सभी उपलब्ध फ़ॉन्ट्स की सूची के साथ कॉम्बो-बॉक्स कैसे भर सकता हूं?उपलब्ध फ़ॉन्ट्स की सूची के साथ कॉम्बोबॉक्स भरें

+0

कृपया (इन उदाहरणों पर एक नज़र http://www.java2s.com/Code/CSharp/GUI-Windows-Form/Loadallsysteminstalledfonts है एचटीएम) (http://www.java2s.com/Code/CSharp/GUI- विन्डोज़- फॉर्म /Loadallsysteminstalledfonts.htm), (http://www.java2s.com/Code/CSharp/GUI- विन्डोज़- फॉर्म/Fontlist.htm) (http://www.java2s.com/Code/CSharp/GUI-Windows-Form/Fontlist.htm)। – thelost

+0

@thelost लिंक अब मौजूद नहीं है –

उत्तर

52

आप System.Drawing.FontFamily.Families का उपयोग उपलब्ध फोंट प्राप्त करने के लिए कर सकते हैं।

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

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

// add the fonts to your ComboBox here 
+0

मैंने मॉन्टसेराट फ़ॉन्ट स्थापित किया। यह कोड मॉन्टसेराट फ़ॉन्ट्स की सूची नहीं देता है, लेकिन माइक्रोसॉफ़्ट वर्ड करता है और नियंत्रण कक्ष उपस्थिति और विजुअलाइजेशन फ़ॉन्ट को भी सूचीबद्ध करता है। तो क्या गलत है? फ़ॉन्ट का यूआरएल डाउनलोड करें https://www.fontsquirrel.com/fonts/montserrat – qub1n

+1

मुझे मिल गया। यह कोड केवल ट्रू टाइप फ़ॉन्ट्स सूचीबद्ध करता है, यह ठीक देखें http://stackoverflow.com/questions/329225/fonts-missing-in-winforms-fontdialog – qub1n

1

उपयोग स्थापित फ़ॉन्ट संग्रह वर्ग:

http://msdn.microsoft.com/en-us/library/system.drawing.text.installedfontcollection.aspx

यह वैकल्पिक और बराबर दृष्टिकोण ज़ैक जॉनसन से जवाब देने के लिए है।

List<string> fonts = new List<string>(); 
InstalledFontCollection installedFonts = new InstalledFontCollection();   
foreach (FontFamily font in installedFonts.Families) 
{    
    fonts.Add(font.Name); 
} 
6

यह सुनिश्चित नहीं है कि हमें यहां foreach क्यों चाहिए।

IList<string> fontNames = FontFamily.Families.Select(f => f.Name).ToList(); 
+0

मुझे आश्चर्य हुआ। लेकिन तब से यह एक गणना करने योग्य है, फिर भी 'foreach' की आवश्यकता नहीं है? या 'पायथन' जनरेटर जैसे कुछ के लिए सी # सिंटैक्स है? – Jamie

+1

'IList fontNames = FontFamily.Families.Select (f => f.Name) .सूची();' कॉम्बोबॉक्स 'IENumerable' स्वीकार नहीं करता है। –

-1

आप सिर्फ इस तरह बाध्य कर सकते हैं:

ItemsSource="{Binding Source={x:Static Fonts.SystemFontFamilies}}" 
0
ComboBox1.ItemsSource = new InstalledFontCollection().Families; 

और पहली बार चयनित आइटम के लिए:

private void Combo1_Loaded(object sender, RoutedEventArgs e) 
{ 
    ComboBox1.Text = "Tahoma"; 
} 
1

यह आसान तरीका यह करने के लिए है। यह फ़ॉन्ट नाम के लिए दो comboboxes 1 और एक फ़ॉन्ट आकार के लिए भी शामिल है

public FontFamily[] Families { get; } 


private void Form1_Load(object sender, EventArgs e) 
    { 

     foreach (FontFamily oneFontFamily in FontFamily.Families) 
     { 
      comboBox1.Items.Add(oneFontFamily.Name); 
     } 

     comboBox1.Text = this.richTextBox1.Font.Name.ToString(); 
     comboBox2.Text = this.richTextBox1.Font.Size.ToString(); 

     richTextBox1.Focus(); 

    } 

private void comboBox2_SelectedIndexChanged(object sender, EventArgs e) 
    { 

     float size = Convert.ToSingle(((ComboBox)sender).Text); 

     richTextBox1.SelectionFont = new Font(richTextBox1.Font.FontFamily, size); 
    } 
संबंधित मुद्दे