C# 类实例在此上下文(窗体类的按钮)c中不存在#

C# 类实例在此上下文(窗体类的按钮)c中不存在#,c#,C#,我已经创建了一个名为Calculator的新类,保存在我的项目文件夹中,我想知道为什么我不能从按钮单击方法为实例calculator1调用方法SetPressure(double p)。我这样说是错误的 calculator1在此上下文中不存在。 对不起,这可能是一个关于范围的简单问题,但我在别处找不到任何合适的答案,我将非常感谢您的帮助 public partial class Form1 : Form { private void InitializeComponent()

我已经创建了一个名为
Calculator
的新类,保存在我的项目文件夹中,我想知道为什么我不能从
按钮单击
方法为实例
calculator1
调用方法
SetPressure(double p)
。我这样说是错误的

calculator1在此上下文中不存在。

对不起,这可能是一个关于范围的简单问题,但我在别处找不到任何合适的答案,我将非常感谢您的帮助

public partial class Form1 : Form
{
    private void InitializeComponent()
    {
        Calculator calculator1 = new Calculator();
        // ...
    }

    private void button1_Click(object sender, EventArgs e)
    {
        double pressure = Convert.ToDouble(textBox1.Text);
        //textBox6.Text = "pressure is" + pressure;
        calculator1.SetPressure(pressure);
    }
我得到一个错误,说明
calculator1
在此上下文中不存在

没错,
calculator1
InitializeComponent()
方法中的局部变量。您应该在构造函数或字段初始值设定项中将其初始化为
表单1
的一部分:

private readonly Calculator calculator1 = new Calculator();

private void InitializeComponent()
{
    ... // Do not initialize calculator1 here, it's already initialized
}

现在,
Form1
的所有方法都可以共享同一个
calculator1
实例,而无需在每个方法中分别重新定义它。

因为您在方法
InitializeComponent
Calculator Calculator 1=new Calculator()中定义了变量的范围您收到错误消息

类实例不存在

要解决您的问题,有两种选择

选项1。使用in-button_-click方法创建Calucalator实例

选项2。创建可在Form1中使用的类变量

        public partial class Form1:Form         
        private readonly Calculator calculator1 = new Calculator();    
        private void InitializeComponent()
                    {
                       }      
             private void button1_Click(object sender, EventArgs e)
                    {
                        double pressure = Convert.ToDouble(textBox1.Text);
                        //textBox6.Text = "pressure is" + pressure;
                        calculator1.SetPressure(pressure);
                    }

它是
InitializeComponent()
中的局部变量。让它成为一个类成员。谢谢,这是可行的,但我希望有几个按钮可以为同一个实例设置不同的值,所以在每个按钮单击方法中创建一个新的“计算器”不会真的有帮助,我猜?你可以试试我在2中列出的选项。谢谢,我很感激!
        public partial class Form1:Form         
        private readonly Calculator calculator1 = new Calculator();    
        private void InitializeComponent()
                    {
                       }      
             private void button1_Click(object sender, EventArgs e)
                    {
                        double pressure = Convert.ToDouble(textBox1.Text);
                        //textBox6.Text = "pressure is" + pressure;
                        calculator1.SetPressure(pressure);
                    }