如何在一个形式的事件中回忆一个类的方法

时间:2016-03-21 05:48:22

标签: c# forms

这是我的班级:

public class CowTypeDefaults
{
  public static void LactatingCow()
    {
        Form1 frm = new Form1();
        {
            frm.CowAgetxtBox.Enabled = true;
            frm.CowWeighttxtBox.Enabled = true;
            frm.DaysPregtxtBox.Enabled = true;
            frm.BCStxtBox.Enabled = true;
            frm.DaysInMilktxtBox.Enabled = true;
            frm.LactationNumbertxtBox.Enabled = true;
            frm.FirstCalftxtBox.Enabled = true;
            frm.CalfInttxtBox.Enabled = true;
            frm.ADGpanel.Visible = false;
            frm.CalfVarGroupBox.Enabled = false;
        }
    }
}

我想回忆一下我的表格中的lactatingCow(),这是我记得的:

private void CowTypeSelect_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (CowTypeSelect.SelectedIndex == 0)
            {
                CowTypeDefaults.LactatingCow();
            }
        }

它显示没有错误,程序运行但代码不起作用,我的文本框仍然被禁用。

我不知道如何修复它,非常感谢你回答。

3 个答案:

答案 0 :(得分:1)

因为您要在静态方法中重新启动python setup.py -e '/usr/bin/env python' sdist upload,所以每次调用Form1 frm = new Form1();都会有所不同。由于此文件是一个单独的类,因此更好的选择是传递对象。所以方法签名就像:

frm

按钮点击将是:

 public static void LactatingCow(Form1 frm)
     {
        frm.CowAgetxtBox.Enabled = true;
        frm.CowWeighttxtBox.Enabled = true;
        frm.DaysPregtxtBox.Enabled = true;
        frm.BCStxtBox.Enabled = true;
        frm.DaysInMilktxtBox.Enabled = true;
        frm.LactationNumbertxtBox.Enabled = true;
        frm.FirstCalftxtBox.Enabled = true;
        frm.CalfInttxtBox.Enabled = true;
        frm.ADGpanel.Visible = false;
        frm.CalfVarGroupBox.Enabled = false;
    }

答案 1 :(得分:0)

您每次都在创建Form1的新实例。将表单的实例作为参考传递给您方法:

public static void LactatingCow(Form1 form)
{
    form.CowAgetxtBox.Enabled = true;
    form.CowWeighttxtBox.Enabled = true;
    form.DaysPregtxtBox.Enabled = true;
    form.BCStxtBox.Enabled = true;
    form.DaysInMilktxtBox.Enabled = true;
    form.LactationNumbertxtBox.Enabled = true;
    form.FirstCalftxtBox.Enabled = true;
    form.CalfInttxtBox.Enabled = true;
    form.ADGpanel.Visible = false;
    form.CalfVarGroupBox.Enabled = false;
}

并使用this调用它:

private void CowTypeSelect_SelectedIndexChanged(object sender, EventArgs e)
{
    if (CowTypeSelect.SelectedIndex == 0)
        CowTypeDefaults.LactatingCow(this);
}

答案 2 :(得分:0)

我认为定义一个代表可以解决你的问题。 根据您的目标方法定义委托,并在类Form中声明该委托的公共变量,将其命名为Degegate temporary。当Form frm = new Form();使用frm.Delegate接收目标方法,然后在您需要的类Form Form事件中执行该委托varable。我在mobelphone上回答你的问题,所以我无法改变代码风格,抱歉