C# - 将字符串设置为EnumValue

时间:2013-03-28 09:28:45

标签: c# winforms casting toolstripdropdown

我有ToolStripMenuToolStripDropDownButtons。那些dropDownButtons自己有ToolStripMenuItems(子按钮)。我需要设置可见性权限,问题是用户可能只拥有某些tsMenuItems的权限,或者可能会忽略某个dropDownButton中的所有项目,然后整个ToolStripDropDownButtons应设置为Visible = false

可见度的权利在公共Enum中设置,如下所示:

[EnumValue("Clients")]
Clients = 1,

[EnumValue("Materials")]
Materials = 2,

[EnumValue("Uppers")]

依旧......

我开始编写一个方法,但它所基于的逻辑是每个ToolStripItem的命名就像EnumValue一样。所以我需要(如果可能的话)以某种方式做到这一点:

private void SetToolStripDropDownVisibility(ToolStripDropDown mainBtn, params ToolStripItem[] item)
        { 
            foreach (ToolStripItem tempItem in item)
            {
                EnumValue eValue = tempItem.Text;
                if (Helpers.GrantActivity(ControlEnum.eValue, ActionEnum.ShowMenuItem))
            }
        }
  • 首先,如果可能,请使用tempItem.Text作为我在此处尝试的EnumValue,但显然需要一些演员或其他 - EnumValue eValue = tempItem.Text;并使用正确的参数调用辅助方法 - { {1}}如果我可以将ControlEnum.eValue用作tempItem.Text,我认为仍然依赖于此。

2 个答案:

答案 0 :(得分:1)

  

我有字符串(来自tempItem.Text)我需要将它用作   EnumValue (来自评论)

您可以使用Enum.ParseEnum.TryParse<TEnum>方法,例如:

EnumValue enumValue;
if (Enum.TryParse<EnumValue>("Materials", out enumValue))
{
    //parsing successful
}
else
{
    //parisng failed. 
}

输出:

enumValue = Materials

如果您的枚举定义为:

public enum EnumValue
{
    Clients = 1,
    Materials = 2,
}

答案 1 :(得分:0)

试试这个,我在几个月前做过的项目中有类似的东西,它对我有用。

EnumValue enm = (EnumValue)Enum.Parse(typeof(EnumValue), tempItem.Text);