0

这不是长篇故事!只是它似乎很长;)

在我的应用程序中user access,这意味着对按钮的访问与其用户访问范围有关。

在 winform 层:我有一个表单,它在分区的checkedListboxes 中显示所有已确定按钮的名称。我不想手动填写表格。我想通过代码创建checkedListboxes。为了得到他们物品的文字,我有以下计划:

clssMenu_Item:我可以在这个类中保存一个按钮nametext属性。

public class clssMenu_Item
{
    public string name;
    public string text;
}

clssMenu_List:它给了我 2D generic List<clssMenu_Item>。一种形式的所有按钮都将位于此类的对象中。

public class clssMenu_List
{
    public clssMenu_List ()
    {
           // I dont know how fill private variables     
    }
    #region private variables
        private List<clssMenu_Item> _main ; // buttons in main form
        private List<clssMenu_Item> _accountancy; //buttons in accountancy form
        private List<clssMenu_Item> _management; //buttons in management form
    #endregion 
    #region public properties

        public List<clssMenu_Item> main
        { get { return _main; } }

        public List<clssMenu_Item> accountancy
        { get { return _accountancy; } }

        public List<clssMenu_Item> management
        { get { return _management; } }

    #endregion
}

每个表单中的按钮在它们的Name property. 例如,主窗体中所有确定的按钮都以“Mbtn”开头,因此窗体之间没有任何相同的按钮名称。
现在我不知道如何填充私有变量clssMenu_List。然后我可以在我的外观层中使用它。

谢谢你的关注我的朋友!!请帮我解决它

4

1 回答 1

0

我将创建一个分离的帮助类,从表单中提取所有按钮。

public static class FormHelper
{
    public static Button[] GetButtonsFromForm(Form form)
    {
        // ...
    }
}

我会创建属性而不是字段:

public class clssMenu_Item
{
    public string Name {get;set;}
    public string Text {get;set;}
}

创建menu_items的方法:

public IEnumerable<clssMenu_Item> GetMenuItemsFromForm(Form form)
{
   // convert the buttons to menu_items
   return from button in FormHelper.GetButtonsFromForm(form);
          select new clssMenu_Item { Name = button.Name, Text = button.Text };
}

接下来,我会将所有按钮添加到右侧列表中。

public void Fill()
{
    clssMenu_List lst = new clssMenu_List();

    clssMenu_List.main.AddRange(GetMenuItemsFromForm(mainForm));
    clssMenu_List.accountancy.AddRange(GetMenuItemsFromForm(accountancyForm));
    clssMenu_List.management.AddRange(GetMenuItemsFromForm(managementForm));

}

不要忘记在您的班级中创建列表:

    private List<clssMenu_Item> _main = new List<classMenu_Item>(); // buttons in main form
    private List<clssMenu_Item> _accountancy = new List<classMenu_Item>(); //buttons in accountancy form
    private List<clssMenu_Item> _management = new List<classMenu_Item>(); //buttons in management form

亲自:

我会将它们存储在字典中,因为您可以按名称访问它们。而且我不会创建列表类型的属性。我宁愿创建添加/删除方法。

于 2013-08-28T08:24:23.197 回答