UserControls并激活按钮

时间:2013-12-19 21:57:15

标签: .net winforms c#-4.0

我尝试使用UserControls开发应用程序。我的MainForm上有一个TableLayoutPanel动态地为不同的UserControls充电。其中一个UserControl包含一个FlowLayoutPanel,其中按钮是动态加载的。在开始时,此FlowLayoutPanel(带有12个按钮)为Enabled = false。我的问题是,如果我单击我的MainForm上的一个按钮,我希望我的UserControl的FlowLayoutPanel(带有12个按钮)变为Enabled = true。我的FlowLayoutPanel(带有12个按钮)的状态为Enabled = true,但我的FlowLayoutPanel和我的按钮未激活。状态还可以,但实际上我无法单击我的按钮,因为它们不活动。我会忘记一些事吗?这不可能吗?

以下是我的一些代码:

public void OpenCaisseDialog()
{
   System.Windows.Forms.DialogResult OpenCashDialog = new DialogResult();
   OpenCaisseForm OCF = new OpenCaisseForm();
   OpenCashDialog = OCF.ShowDialog();
   if(OpenCashDialog == System.Windows.Forms.DialogResult.OK)
   {
      if ((Convert.ToInt32(OCF.tbMontantOuverture.Text)) > 0)
      {
         PanelTables.Controls.Clear();
         PanelTables.Enabled = true;
         PanelTables.Refresh();
      }
      else
      {
         MessageBox.Show("La somme en caisse est égale à 0");
      }
   }
   PanelTables.Refresh();
}

感谢您的帮助。我尝试了你的代码,但我不知道我是否使用它。我这样做:

 public void OpenCaisseDialog()
    {
        System.Windows.Forms.DialogResult OpenCashDialog = new DialogResult();
        OpenCaisseForm OCF = new OpenCaisseForm();
        OpenCashDialog = OCF.ShowDialog();

        if(OpenCashDialog == System.Windows.Forms.DialogResult.OK)
        {
            if ((Convert.ToInt32(OCF.tbMontantOuverture.Text)) > 0)
            {
                PanelTables.Enabled += MyFlowLayoutPanel_EnabledChanged();
                PanelTables.Refresh();
            }
            else
            {
                MessageBox.Show("Sum isn't equals 0");
            }
        }
        PanelTables.Refresh();
    }


    private void MyFlowLayoutPanel_EnabledChanged()
    {
        foreach(Control c in this.PanelTables.Controls)
        {
            c.Enabled = this.PanelTables.Enabled;
        }
    }

我在该行中出错:PanelTables.Enabled + = MyFlowLayoutPanel_EnabledChanged();

“+ =不能与bool和void类型一起使用”

我使用你的代码好吗?

我使用什么类型?

由于

1 个答案:

答案 0 :(得分:0)

很难从你的代码中辨别出来。 尝试手动完成

MyFlowLayoutPanel.Enabled += MyFlowLayoutPanel_EnabledChanged();

private void MyFlowLayoutPanel_EnabledChanged()
{
    foreach(Control c in MyFlowLayoutPanel.Controls)
    {
        c.Enabled = MyFlowLayoutPanel.Enabled;
    }
}