2013-03-28 47 views
0

我有ToolStripMenu与几个ToolStripDropDownButtons。那些dropDownButtons自己有(子按钮)ToolStripMenuItems。我需要设置可见性权限,问题是用户可能只对某些tsMenuItems有权限,或者可能会忽略某个dropDownButton中的所有项目,那么整个ToolStripDropDownButtons应该设置为Visible = falseC# - 设置字符串作为EnumValue

对能见度的权利在公共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
+0

是你在找什么? http://stackoverflow.com/questions/12403065/how-can-i-assign-a-string-to-an-enum-instead-of-an-intereger-value-in-c/12403191#12403191 – Habib 2013-03-28 09:29:49

+0

待诚实的我不完全理解你的代码,但我认为我需要完全相反 - 我有字符串(从'tempItem.Text')我需要使用它作为'EnumValue'。 – Leron 2013-03-28 09:35:27

+1

你不能使用[Enum.Parse](http://msdn.microsoft.com/en-us/library/essfb559.aspx) – Habib 2013-03-28 09:38:11

回答

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, 
} 
0

试试这个,我有一个项目,我做了几个月前类似的东西,它为我工作。

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