C# 将代码放在C中的按钮后面

C# 将代码放在C中的按钮后面,c#,C#,我正在尝试在“添加”按钮后面添加代码我的代码如下: class CalculateValues { private int _num1; private int _num2; public int Num1 { get { return _num1; } set {

我正在尝试在“添加”按钮后面添加代码我的代码如下:

class CalculateValues
    {
        private int _num1;
        private int _num2;


        public int Num1
        {
            get
            {
                return _num1;
            }
            set
            {
                _num1 = value;
            }
        }
        public int Num2
        {
            get
            {
                return _num2;
            }
            set
            {
                _num2 = value;
            }
        }
        public virtual int calculate()
        {
            return _num1 + _num2;

        }
    }
下面是另一个有按钮的代码:

public partial class Form2 : Form
    {
        public Form2()
        {
            CalculateValues myAdd = new CalculateValues();
            MulitplyValues Add = new MulitplyValues();
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {

            int total = myadd.Add(int.Parse(textBox1.Text), int.Parse(textBox2.Text));    
            MessageBox.Show(total.ToString());

        }
但每次它告诉我“myAdd”在当前上下文中不存在 我不明白为什么它不起作用。我甚至尝试了几种不同的方法。

将myAdd移动到类范围。在您的代码中,myAdd仅存在于ctor范围内

public partial class Form2 : Form
    CalculateValues myAdd; < ====
    MulitplyValues Add;    < ====
    public Form2()
    {   
        myAdd = new CalculateValues();   < ====             
        Add = new MulitplyValues();      < ====
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {

        int total = myadd.Add(int.Parse(textBox1.Text), int.Parse(textBox2.Text));    
        MessageBox.Show(total.ToString());

    }
}
Add也有同样的问题,将myAdd移动到类范围。在您的代码中,myAdd仅存在于ctor范围内

public partial class Form2 : Form
    CalculateValues myAdd; < ====
    MulitplyValues Add;    < ====
    public Form2()
    {   
        myAdd = new CalculateValues();   < ====             
        Add = new MulitplyValues();      < ====
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {

        int total = myadd.Add(int.Parse(textBox1.Text), int.Parse(textBox2.Text));    
        MessageBox.Show(total.ToString());

    }
}

与Add相同,这是一个范围问题。在构造函数Form2中定义myAdd,这意味着它只在该范围内可用:只有构造函数才能使用它,之后它就消失了

如果希望变量持久化,请将其移动到类范围


我建议阅读

这是一个范围问题。在构造函数Form2中定义myAdd,这意味着它只在该范围内可用:只有构造函数才能使用它,之后它就消失了

如果希望变量持久化,请将其移动到类范围

我建议阅读

myAdd的作用域为Form2构造函数的局部作用域。而是为类声明它:

public partial class Form2 : Form
{
    CalculateValues myAdd;
    public Form2()
    {
        myAdd = new CalculateValues();
        MulitplyValues Add = new MulitplyValues();
        InitializeComponent();
    }
myAdd在本地作用域为Form2构造函数。而是为类声明它:

public partial class Form2 : Form
{
    CalculateValues myAdd;
    public Form2()
    {
        myAdd = new CalculateValues();
        MulitplyValues Add = new MulitplyValues();
        InitializeComponent();
    }

也应该能够做到以下几点:

 public Form2()
{
       CalculateValues myAdd = new CalculateValues();
       MulitplyValues Add = new MulitplyValues();
       InitializeComponent();
       button.Click += (o,e)=> {
              int total = myadd.Add(int.Parse(textBox1.Text), int.Parse(textBox2.Text));    
              MessageBox.Show(total.ToString());
       }
}

检查这是否适用于您。

还应该能够执行以下操作:

 public Form2()
{
       CalculateValues myAdd = new CalculateValues();
       MulitplyValues Add = new MulitplyValues();
       InitializeComponent();
       button.Click += (o,e)=> {
              int total = myadd.Add(int.Parse(textBox1.Text), int.Parse(textBox2.Text));    
              MessageBox.Show(total.ToString());
       }
}

检查这是否适合您。

在按钮单击方法中,它应该是myAdd,而不是myAdd。名称在C中区分大小写。在button1_Click方法中,它应该是myAdd,而不是myAdd。名字在C中区分大小写。是的,我看到了。。无论是myAdd还是Add,它都给了我同样的问题。@taylor1984。现在凉快吗?顺便说一句,您需要从myadd更改为myadd C是区分大小写的。是的,我也这样做了,然后我收到另一个错误,错误是:Error1'WindowsFormsApplication2.CalculateValue'不包含'Add'的定义,并且没有扩展方法'Add'接受类型为'WindowsFormsApplication2.CalculateValue'的第一个参数。是否缺少使用指令或程序集引用?@taylor1984。好CalculateValues有一个Add方法吗?我想从上面的代码来看没有,我没有get和set。是的,我看到了。。无论是myAdd还是Add,它都给了我同样的问题。@taylor1984。现在凉快吗?顺便说一句,您需要从myadd更改为myadd C是区分大小写的。是的,我也这样做了,然后我收到另一个错误,错误是:Error1'WindowsFormsApplication2.CalculateValue'不包含'Add'的定义,并且没有扩展方法'Add'接受类型为'WindowsFormsApplication2.CalculateValue'的第一个参数。是否缺少使用指令或程序集引用?@taylor1984。好CalculateValues是否有Add方法?我想通过查看上面的代码,没有,我没有get和set。WindowsFormsApplication2.CalculateValues不包含“Add”的定义,并且没有扩展方法“Add”接受类型为“WindowsFormsApplication2.CalculateValues”的第一个参数,是否缺少使用指令或程序集引用?@taylor1984:不明白。但是现在如何在代码中使用它呢?CalculateValues是否具有该功能?我已经尝试了CalculateValues,就像您得到它一样,并已上载到公共窗体。WindowsFormsApplication2.CalculateValues不包含“Add”的定义,并且没有扩展方法“Add”接受类型为“WindowsFormsApplication2.CalculateValues”的第一个参数。是否缺少使用指令或程序集引用?@taylor1984:不明白。但是现在如何在代码中使用它呢?CalculateValues是否具有该功能?我已经尝试了CalculateValues,就像您得到它一样,并上传了公共表单。