CHill60
У вас есть несколько вариантов.
Во-первых, вы можете перечислить все шрифты, установленные в вашей системе - см. Как: перечислить установленные шрифты[^]
Если вы хотите создать свое собственное перечисление, вы можете иметь описания с такими пробелами (ref:c# - могут ли мои перечисления иметь дружественные имена?[^])
//Requires using System.ComponentModel;
public enum FontFamilies
{
[Description("Ariel")]
Ariel,
[Description("Arial Narrow")]
ArialNarrow,
[Description("Times New Roman")]
TimesNewRoman
};
Чтобы получить эти описания, вы можете сделать это (та же ссылка, что и выше):
//Requires using System.Reflection;
public static string GetDescription(Enum value)
{
Type type = value.GetType();
string name = Enum.GetName(type, value);
if (name != null)
{
FieldInfo field = type.GetField(name);
if (field != null)
{
DescriptionAttribute attr =
Attribute.GetCustomAttribute(field,
typeof(DescriptionAttribute)) as DescriptionAttribute;
if (attr != null)
{
return attr.Description;
}
}
}
return null;
}
Альтернативный метод состоит в том, чтобы расширить
enum
видеть -
c# - могут ли мои перечисления иметь дружественные имена? - переполнение стека[
^]
public enum FontFamilies2
{
Ariel,
ArialNarrow,
TimesNewRoman
};
public static class ExtensionMethods
{
public static string EnumValue(this FontFamilies2 e)
{
switch (e)
{
case FontFamilies2.Ariel:
return "Ariel";
case FontFamilies2.ArialNarrow:
return "Ariel Narrow";
case FontFamilies2.TimesNewRoman:
return "Times New Roman";
}
return "Where did you find that value";
}
}
И вот как вы получите доступ к этим описаниям соответственно:
System.Diagnostics.Debug.Print(GetDescription(FontFamilies.TimesNewRoman));
System.Diagnostics.Debug.Print(FontFamilies2.TimesNewRoman.EnumValue());
[EDIT OP теперь заявляет, что они хотят получить это описание в виде списка]
Предполагая, что вы пошли за
[Description...]
атрибут тогда вы можете сделать это:
//Requires using System.Collections.Generic;
var fonts = new List<string>();
foreach (var x in Enum.GetValues(enumType: typeof (FontFamilies)))
fonts.Add(GetDescription(x as Enum));
или версия Linq
var fonts = (from object x in Enum.GetValues(enumType: typeof (FontFamilies)) select GetDescription(x as Enum)).ToList();
abdul subhan mohammed
Спасибо Чили, но я хочу отобразить описание enum в виде списка, а не значения enum. Пожалуйста, нажмите на ссылки, чтобы проверить мой код.
https://drive.google.com/open?id=0Bz2clgZZZsl4eUVWRUwzclBZalk
https://drive.google.com/open?id=0Bz2clgZZZsl4bWEwZllmanU4Yk0
abdul subhan mohammed
код
общественные EvaluateFontName(IQuestion вопрос) : основание(вопрос: "Оцените название шрифт", новый ModuleType[] { ModuleType.Word2013 })
{
Дефинепараметр(
"WordFile",
"Имя файла нового файла, который будет создан",
ложный);
Дефинепараметр(
"Текст",
"Текст должен быть изменен",
ложный);
Дефинепараметр(
"Имя шрифта",
"имя шрифта",
typeof(FontFamily));//FontFamily-это перечисление, я хочу отобразить описание, а не значения.
}