2011-02-24 79 views
0

我有一个应用程序有一个主窗体,其中有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; 
     } 
    } 

回答

0

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

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

public MainForm() 
{ 
_this = this; 
... 
} 
在另一个地方

同时:

MainForm.Instace.somePublicComponents ....

+0

我宁愿不夫妇形式,如果我能避免它,毕竟我也可以直接将主表单传递给辅助表单并让它处理。 – HellSpam 2011-02-24 11:58:22