c# -设置字符串为枚举值



我有一个ToolStripMenu和几个ToolStripDropDownButtons。那些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;和调用助手方法与正确的参数- ControlEnum.eValue,这在我看来仍然取决于,如果我可以使用tempItem.Text作为EnumValue

我有字符串(从tempItem.Text),我需要使用它作为一个EnumValue (来自注释)

可以使用Enum。解析或Enum.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,
}

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

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

相关内容

  • 没有找到相关文章

最新更新