爲什麼Font對象的FontFamily參數是一個字符串而不是枚舉?FontFamily的問題
0
A
回答
4
FontFamily指的是字體的名稱。雖然你可以使用「等寬」或「襯線」,但我不認爲它會被.Net支持。
請記住,使用枚舉是不可能的。枚舉是一個靜態編譯時功能,這意味着它不能從您的系統上的字體動態生成一個枚舉。事實上,包括任何這種特定的語言可能是一個不好的主意。即使支持,用戶的機器也不會與您的機器具有相同的字體 - 某些字體會被錯誤地包含在列表中,有些字體會被排除(因爲編譯enum會變成'final')。
枚舉是一個方便的積分常數存儲,沒有別的。枚舉中的每個項目都有一個方便的名稱和值,即使您沒有指定它。以下兩個枚舉是相同的。
public enum MyEnum
{
A = 1,
B = 2
}
public enum FooEnum
{
A,
B
}
還有兩個問題,枚舉名不能包含空格,其中字體名稱可以。從枚舉中獲取字段不是一項簡單的任務(它需要大量的反射代碼)。
下面的代碼將讓你的字體列表(你將需要添加System.Drawing中作爲參考):
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing.Text;
using System.Drawing;
namespace ConsoleApplication19
{
class Program
{
static void Main(string[] args)
{
InstalledFontCollection ifc = new InstalledFontCollection();
foreach (FontFamily o in ifc.Families)
{
Console.WriteLine(o.Name);
}
Console.ReadLine();
}
}
}
3
因爲Enum是一組固定值,當它改變時強制重新編譯(在這種情況下,這最終意味着:框架的新版本)。
字體系列可能會更改,可用字體會因主機系統和主機系統而有所不同。
相關問題
- 1. WPF的FontFamily格式問題
- 2. c#中的FontFamily問題#
- 3. wpf發佈時FontFamily的問題
- 4. UWP打印:FontFamily,打印問題
- 5. FontFamily不存在
- 6. CSS的FontFamily的星火FormItems
- 7. 無法設置Fontfamily
- 8. XAMARIN:跨平臺FontFamily
- 9. WPF中的FontFamily引用
- 10. 調試加載的FontFamily?
- 11. Android的fontFamily無襯線燈
- 12. 在Combobox中顯示FontFamily
- 13. android textclock set fontfamily not work
- 14. 如何更改ApplicationBar fontfamily?
- 15. 將FontFamily值插入SelectedItem
- 16. 改變fontFamily中有條件
- 17. React-Native ToolbarAndroid不支持fontFamily
- 18. 的FontFamily和大小的方法
- 19. TextBox-> FontFamily = ref new FontFamily(「Arial」);給我Arial Narrow字體,而不是宋體
- 20. 如何更改窗體的FontFamily?
- 21. 如何更改ContentPresenter上的FontFamily?
- 22. 從WPF的FontFamily獲取字體名稱
- 23. 如何計算UWP中FontFamily的高度?
- 24. C#獲取全部可用的FontFamily
- 25. C#WPF獲取本地化的FontFamily
- 26. Toast在使用主題中的fontFamily屬性時拋出ArrayIndexOutOfBoundsException與appcompat v26
- 27. 分配CSS fontFamily中與多家結束
- 28. WPF TextBlock FontStyle =「Italic」FontFamily =「Segoe UI Light」
- 29. 如何在代碼中設置FontFamily
- 30. 如何將FontFamily存儲爲StaticResource?
一些友好的建議:你應該谷歌這類的東西 - 或者在最少確保你完全理解*確切地說*枚舉是什麼。 – 2008-12-12 07:48:55