0

私はToolStripMenuいくつかの を持っていToolStripDropDownButtonsます。これらの dropDownButtons にはToolStripMenuItems、それ自体 (サブ ボタン) があります。表示権限を設定する必要があります。問題は、ユーザーが一部の tsMenuItems に対してのみ権限を持っているか、特定の dropDownButton 内のすべてのアイテムを表示することが省略されている可能性があり、全体ToolStripDropDownButtonsを に設定する必要があることVisible = falseです。

可視性の権利は、次のEnumようにパブリックに設定されます。

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

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

[EnumValue("Uppers")]

等々...

私はメソッドを書き始めましたが、それが基づいているロジックは、それぞれToolStripItemEnumValue. だから私が必要とするのは(可能であれば)どういうわけかそれをすることです:

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として使用することですが、明らかにいくつかのキャストなどが必要です-そして、正しい引数でヘルパーメソッドを呼び出す必要があります-それは、 asを使用できるかどうかに依存しているように思えます。EnumValueEnumValue eValue = tempItem.Text;ControlEnum.eValuetempItem.TextEnumValue
4

2 に答える 2

1

文字列があります (tempItem.Text から) EnumValue として使用する必要があります(コメントから)

Enum.Parseまたは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,
}
于 2013-03-28T09:50:43.173 に答える
0

これを試してみてください。数か月前に行ったプロジェクトで似たようなことがあり、うまくいきました。

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