我尝试使用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类型一起使用”
我使用你的代码好吗?
我使用什么类型?
由于
答案 0 :(得分:0)
很难从你的代码中辨别出来。 尝试手动完成
MyFlowLayoutPanel.Enabled += MyFlowLayoutPanel_EnabledChanged();
private void MyFlowLayoutPanel_EnabledChanged()
{
foreach(Control c in MyFlowLayoutPanel.Controls)
{
c.Enabled = MyFlowLayoutPanel.Enabled;
}
}