2013-12-19 2 views
0

Я пытаюсь разработать приложение с помощью UserControls. У меня есть TableLayoutPanel на моем MainForm, который динамически загружает разные UserControls. Один из этих UserControl содержит FlowLayoutPanel, в котором кнопки загружаются динамически. В начале этого FlowLayoutPanel (с 12 кнопками) Enabled = false. Моя проблема в том, что если я нажму кнопку на моем MainForm, я хочу, чтобы FlowLayoutPanel (с 12 кнопками) из моего UserControl стал Enabled = true. Статус моего FlowLayoutPanel (с 12 кнопками) - Enabled = true, но моя FlowLayoutPanel и мои кнопки неактивны. Статус в порядке, но на самом деле я не могу нажимать на свои кнопки, потому что они неактивны. Я что-нибудь забуду? Разве это невозможно?UserControls и кнопки активации

Вот некоторые из моего кода:

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 и ничтожной типа»

Это хорошо, что я использовал код?

Какой тип я использую?

Thanks

ответ

0

Трудно сказать по вашему коду. Попробуйте сделать это вручную

MyFlowLayoutPanel.Enabled += MyFlowLayoutPanel_EnabledChanged(); 

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

привет спасибо за помощь. – Paintbox

Смежные вопросы