我有一个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);