我有一个propertygrid我需要在propertygrid中创建一个组合框并显示int值(1到9),我发现使用enum是最简单的方法,但枚举无法显示int值,即使我尝试强制转换它到int,但我不知道如何返回所有的值。还有其他办法吗?提前致谢。以下是我的代码。
public class StepMode
{
private TotalSteps totalSteps;
public TotalSteps totalsteps
{
get { return totalSteps; }
set { value = totalSteps; }
}
public enum TotalSteps
{
First = 1,
Second = 2,
Three = 3,
Four = 4,
Five = 5,
Six = 6,
Seven = 7,
Eight = 8,
Nine = 9
}
}
答案 0 :(得分:3)
要获取Enum的所有值,请尝试使用
var allValues = Enum.GetValues(typeof(TotalSteps)).Cast<int>().ToArray();
并且您的totalSteps属性应该如下所示
public int[] totalSteps
{
get { return Enum.GetValues(typeof(TotalSteps)).Cast<int>().ToArray(); }
}
答案 1 :(得分:0)
如何在“get”功能中返回它?该值无法转换
属性(我猜)定义为获取/设置选定的枚举值,因此当type为TotalSteps时,不能返回int。
我建议在Step
中添加另一个 readonly 属性,将选定的enum
值转换为int
public int Step
{
get {return (int)totalsteps; }
}
由于您提到(作为注释)您希望所有int值绑定到ComboBox
,请执行此操作。
public List<int< ComboValues
{
get { return Enum.GetValues(typeof(TotalSteps)).Cast<int>().ToList(); }
}
答案 2 :(得分:0)
你应该创建一个返回int而不是TotalSteps的属性
你正在这样做 private TotalSteps totalSteps;
public TotalSteps totalsteps
{
get { return totalSteps; }
set { value = totalSteps; }
}
我建议这样做
private TotalSteps totalSteps;
private int totalStepsInInt;
public int TotalstepsInInt
{
get { return totalStepsInInt; }
set { totalStepsInInt = value; }
}
并且在设置此属性时,您必须通过执行此操作来转换int中的totalSteps。
`TotalStepsInInt = (int)totalSteps;`