C# 将下拉索引值作为枚举字段的值传递
我有一个带有下拉菜单的面板;我用它在我的项目中设置一个字段C# 将下拉索引值作为枚举字段的值传递,c#,unity3d,C#,Unity3d,我有一个带有下拉菜单的面板;我用它在我的项目中设置一个字段 public class projectclass { public enum mainpriority { basic, urgent, critical }; public mainpriority _priorityfield { get; set;} } project类对此字段使用枚举,因此要填充下拉列表,我需要执行以下操作: mydropd
public class projectclass
{
public enum mainpriority
{
basic,
urgent,
critical
};
public mainpriority _priorityfield { get; set;}
}
project类对此字段使用枚举,因此要填充下拉列表,我需要执行以下操作:
mydropdown.options.Clear();
foreach (projectclass._priorityfield priority in projectclass._priorityfield.GetValues(typeof(projectclass._priorityfield)))
{
mydropdown.options.Add( new Dropdown.OptionData() {text = priority.ToString()});
}
这允许我在dropbox中为projectclass的每个实例显示字段。
在这个方向上一切都是好的,但是如果我想做相反的事情(更改下拉列表中的值,并相应地更改类字段),我无法使它工作
主要的问题是,我试图将值赋值为int(这是我从dropdown.value()方法中得到的),但是VS告诉我不可能将_priorityfield类型设置为int类型
不是枚举,等于0,1,2…..n;那么您可以使用“基本”或0作为值
这就是我使用onValueChanged委托从下拉列表中设置类实例值的方法
private void UpdatePriority(Dropdown priority)
{
int tempvalue = priority.value;
projectclass_instance1._priorityfield = tempvalue;
}
我假设我可以传递一个int,但是VS说这是不可能的。我可以将下拉列表的每个值映射到枚举中的一个条目,但我不确定它是否是最佳解决方案。感谢Ehsan提供的解决方案
错误是因为我需要将int值强制转换为enum类型,以便正确识别该值。您必须强制转换它:
(mainpriority)tempvalue
就是这样;强制转换它将删除错误。它不会更新类实例中的原始值,但这是另一个问题;我能解决这个问题。谢谢