2015-07-28 72 views
0

我有一个C#Win窗体。从父窗体启用按钮

主菜单形式有

  1. 按钮
  2. 按钮B
  3. 按钮C
  4. 按钮设置

每个按钮会打开一个新的胜利方式。 单击“设置”按钮后,它将打开一个设置窗体。 这个表单将使用一个datagridview列出主菜单中除安装按钮以外的所有按钮。

管理员可以点击复选框以选择主菜单,使该按钮

任何人都知道如何实现这一目标的实现安装程序的形式我的代码

部分

foreach (Button button in ????.Controls.OfType<Button>()) 
     { 
      if (!button.Text.Contains("Setup")) 
      { 
       int index = dgvCheckbox.Rows.Add(); 
       dgvCheckbox.Rows[index].Cells["Selected"].Value = 0; 
       dgvCheckbox.Rows[index].Cells["Button"].Value = button.Text; 
      } 
     } 

如果我用

MainMenu mainMenu = new MainMenu 
foreach (Button button in mainMenu.Controls.OfType<Button>()) 

会有问题,因为主菜单已经打开

+2

你在哪里卡住了?显示代码给你带来麻烦 – Icepickle

+0

你可以访问你的'Page'的'Parent'属性,然后在父对象上使用'FindControl'方法。 –

+0

您可以将主窗体作为参数传递给子窗体的构造函数。这样你可以迭代当前实例中的其他控件。 – Greg

回答

0

创建表演形式前复选框(而非菜单),这样你就可以用同样的方式填写菜单(此代码是主窗体上):

private void buttonSetup_Click(object sender, EventArgs e) { 
     using (var adminForm = new AdminForm()) { 
      foreach (var button in Controls.OfType<Button>().Where(bt => !bt.Text.Contains("Setup"))) { 
       adminForm.Controls.Add(new CheckBox { 
        Text = button.Text, 
        Location = button.Location 
       }); 
      } 
      adminForm.ShowDialog(); 
     } 
    }