0

我有ToolStripMenu几个ToolStripDropDownButtons。那些 dropDownButtonsToolStripMenuItems本身就有(子按钮)。我需要设置可见性权限,问题是用户可能仅对某些 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.TextasEnumValue我在这里尝试过的,但显然需要一些强制转换或其他 -EnumValue eValue = tempItem.Text;并使用正确的参数调用辅助方法 -ControlEnum.eValue在我看来,这仍然取决于我是否可以使用tempItem.Textas EnumValue
4

2 回答 2

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,
}
于 2013-03-28T09:50:43.173 回答
0

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

EnumValue enm = (EnumValue)Enum.Parse(typeof(EnumValue), tempItem.Text);
于 2013-03-28T09:53:22.567 回答