从另一个表单配置一个表单上的按钮

时间:2011-02-24 11:42:04

标签: c# winforms

我的应用程序有一个主窗体,有10个用户可配置的按钮。 我有另一种形式来配置这10个按钮动作。

配置这10个按钮的最佳方法是什么? 目前,我将10个按钮作为List传递给第二个表单,并将它们链接到相应的组合框标签。 问题是如果将来某个时候我决定添加一个按钮或重新排列它们,我将不得不重写代码。有人知道更好的方法吗?

    private readonly List<PictureBox> pictureBoxes;
    private readonly List<ComboBox> comboBoxes;
    public Shortcut_Buttons (List<string> stringsList, List<Button> sButtons)
    {
        InitializeComponent();


        pictureBoxes = Controls.OfType<PictureBox>().ToList();
        comboBoxes = Controls.OfType<ComboBox>().ToList();

        if (pictureBoxes.Count != sButtons.Count)
            throw new ArgumentException("Not enough Buttons/Pictureboxes.");

        int i = 0;
        foreach (var pictureBox in pictureBoxes)
        {
            pictureBox.BackgroundImage = sButtons[i++].BackgroundImage;
        }



        i = 0;
        foreach (var comboBox in comboBoxes)
        {
            comboBox.DataSource = stringsList;
            comboBox.Tag = sButtons[i++];
            comboBox.SelectedIndexChanged += SetShortcutButton;
        }
    }

1 个答案:

答案 0 :(得分:0)

通过获取实例直接访问表单? 像:

private static MainForm _this = null;
public static MainForm Instance { get { return _this; } } 

public MainForm()
{
_this = this;
...
}

同时在另一个地方:

... MainForm.Instace.somePublicComponents