如何从另一个用户控件禁用组合框

时间:2013-08-23 11:25:17

标签: c# winforms

我有两个用户控件ImportDailyReport。导入用户控件包含一个组合框,DailyReport有一些事件,如编辑和保存。当我点击编辑按钮我想要禁用Import用户控件上的combox。 DailyReport用户控件位于Import用户控件上。

我已尝试在DailyReport usercontrol中使用以下代码。

public delegate void EditButtonClickEventHandler(object sender, EventArgs e);
public event EditButtonClickEventHandler OnEditClick;

private void actionControlDRD_EditEvent(object sender, EventArgs e)
{
    if (OnEditClick != null)
    {
        OnEditClick(sender, e);
    }
}

我该怎么做?

3 个答案:

答案 0 :(得分:2)

在第一种形式中我会有这样的东西。

public delegate void ButtonClickedEvent(object sender);
public event ButtonClickedEvent Form1ButtonClicked;

private void button1_Click(object sender, EventArgs e)
{
    if (Form1ButtonClicked != null)
    {
        Form1ButtonClicked(sender);
    }
}

在第二种形式中我会有类似的东西。

public Form2()
{
    InitializeComponent();

    Form1 f = new Form1();
    f.Form1ButtonClicked += new Form1.ButtonClickedEvent(f_Form1ButtonClicked);
    f.Show();
}

void f_Form1ButtonClicked(object sender)
{
    comboBox1.Enabled = false;
}

答案 1 :(得分:0)

private void EnableDisableControls(Control.ControlCollection Controls, bool state)
{
    foreach (Control c in Controls)
    {
        c.Enabled = state;
        if (c is ComboBox)
        {
            // do something here with comboBoxes 
        }

        if (c.Controls.Count > 0)
        {
            this.EnableDisableControls(c.Controls, state);
        }
    }
}

答案 2 :(得分:0)

您必须在表单构造函数中为导入 DailyReport 用户控件创建一个且仅一个对象

的形式添加两个方法
  1. 接受Import对象作为参数
  2.   

    Void DisableDailyReportCombo(导入objImport)

         

    {

         

    objDailyReport .Combobox.enabled = false;

         

    }

    1. 接受DailyReportobject作为参数
    2.   

      Void DisableImportCombo(DailyReport objDailyReport)

           

      {

           

      objDailyReport .Combobox.enabled = false`

           

      }

      并处理每种方法中的相应功能

      即,当Import用户控件引发事件时,使用参数DailyReport对象调用 DisableImportCombo 方法并禁用组合框