在C#中,我使用Enum来获取下拉值:
class Enum
{
public enum Fields
{
AssignedTo = "Assigned To",
CloseReason = "Close Reason",
CustomerId = "Customer ID",
CustomerName = "Customer Name",
CompanyID = "Company ID",
CompanyName = "Company Name",
}
}
当我构建解决方案时。我收到错误:无法隐式转换类型' string'到' int'。
我删除了双引号,但仍显示相同的错误。我做错了什么?
答案 0 :(得分:2)
在C#字符串中,枚举不允许使用类型。
引自MSDN https://msdn.microsoft.com/en-us/library/sbbt4032.aspx
枚举的已批准类型是byte,sbyte,short,ushort,int, uint,long或ulong
如果必须进行某种转换(即使用[DisplayName]属性)以在下拉列表中使用枚举。
答案 1 :(得分:0)
这在c#
中在语法上无效https://msdn.microsoft.com/en-us/library/sbbt4032.aspx
您需要一种解决方法来在c#
中创建字符串枚举https://www.google.com/?gfe_rd=cr&ei=sBwXV_XZDKO_wQOjmaqABw&gws_rd=ssl#q=string+enum+in+c%23
答案 2 :(得分:0)
它给出了这个错误,因为默认情况下,枚举要求你为枚举中的字段分配一个整数值。
public enum Fields
{
AssignedTo = 1,
CloseReason = 2,
CustomerId = 3,
CustomerName = 4,
CompanyID = 5,
CompanyName = 6
}
如果跳过赋值部分,它将默认开始分配从整数0开始的字段。
答案 3 :(得分:0)
我不确定是不是因为你试图将字符串显示到枚举然后是因为枚举只使用int 16和32所以我们必须创建一个扩展来使它显示字符串然后使用int值来调用它
using System.Reflection;
public static class EnumExtensions
{
public static string DisplayName(this Enum value)
{
FieldInfo field = value.GetType().GetField(value.ToString());
EnumDisplayNameAttribute attribute
= Attribute.GetCustomAttribute(field, typeof(EnumDisplayNameAttribute))
as EnumDisplayNameAttribute;
return attribute == null ? value.ToString() : attribute.DisplayName;
}
}
public class EnumDisplayNameAttribute : Attribute
{
private string _displayName;
public string DisplayName
{
get { return _displayName; }
set { _displayName = value; }
}
}
class Enum
{
public enum Fields
{
[EnumDisplayName(DisplayName = "Assigned To"
AssignedTo,
[EnumDisplayName(DisplayName = "Close Reason"
CloseReason,
[EnumDisplayName(DisplayName = "Customer ID"
CustomerId,
[EnumDisplayName(DisplayName = "Customer Name"
CustomerName,
[EnumDisplayName(DisplayName = "Company ID"
CompanyID,
[EnumDisplayName(DisplayName = "Company Name"
CompanyName ,
}
}
答案 4 :(得分:0)
我认为你不想使用enum进行下拉。尝试查看Dictionary或DataTable或其他一些结构。如果您向我们提供有关您究竟要做什么的更多详细信息,我们可以提供帮助。
编辑:以下是使用List<string>
作为ComboBox
List<string> dsList = new List<string>();
dsList.Add("Assigned To");
dsList.Add("Close Reason");
dsList.Add("Customer ID");
dsList.Add("Customer Name");
dsList.Add("Company ID");
dsList.Add("Company Name");
comboBox1.DataSource = dsList;
此外,您可以根据要向用户显示的选项动态更改列表