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);
}