所以我创建了一个类并在主窗口中实例化一个对象。然后,当我试图在同一个窗口中的按钮中使用该对象时,我不知道如何指示该对象的上下文。我知道这是一个非常基本的问题,但我正在学习,并且还没有能够解决这个问题。
public MainWindow()
{
InitializeComponent();
DeltaMotor M2 = new DeltaMotor();
M2.Card.Set8255();
M2.Stop();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
M2.Move(1); // this can't find M2 within the context
}
我知道这是基本的,但非常感谢帮助。
答案 0 :(得分:4)
正如您所发现的那样,M2
对象不在单击处理程序的范围内,因为它是MainWindow
构造函数中的局部变量。
您可以使M2
成为该类的实例变量,并从以下两行中访问它:
private DeltaMotor M2;
public MainWindow()
{
InitializeComponent();
M2 = new DeltaMotor();
M2.Card.Set8255();
M2.Stop();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
M2.Move(1);
}
答案 1 :(得分:1)
如果您只是希望在这一个课程中可以访问它,那么
private DeltaMotor M2;
public MainWindow()
{
InitializeComponent();
M2 = new DeltaMotor();
M2.Card.Set8255();
M2.Stop();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
M2.Move(1); // this can't find M2 within the context
}
会很好地工作。为了进一步学习,这里有一个关于变量和方法范围的Microsoft参考: https://msdn.microsoft.com/en-us/library/ms973875.aspx
如果您在其他课程中访问M2,那将会非常有用。希望能帮助您入门!
答案 2 :(得分:0)
您可以将M2
声明为类属性:
private DeltaMotor M2 { get; set; }
public MainWindow()
{
InitializeComponent();
M2 = new DeltaMotor();
M2.Card.Set8255();
M2.Stop();
}
然后从您想要的任何方法访问它:
private void Button_Click(object sender, RoutedEventArgs e)
{
M2.Move(1);
}
答案 3 :(得分:0)
您需要在班级创建DeltaMotor
的实例成员。
private DeltaMotor _m2;
public MainWindow()
{
InitializeComponent();
_m2 = new DeltaMotor();
_m2.Card.Set8255();
_m2.Stop();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
_m2.Move(1);
}