2016-08-02 212 views
0

我目前无法将变量从一个类传递到另一个类。我的第一堂课是从我的表格命名(计算器)的默认。第二个叫做记录。将变量从一个类传递到另一个类

public void toolStripLabel1_Click(object sender, EventArgs e) 
    { 

     Record rec = new Record(); 
     System.Windows.Forms.MessageBox.Show(calculation); 
     rec.startRecording(); 
    } 

上面当我点击正确的变量显示在弹出框中。

namespace CalculatorV2 
{ 
    class Record 
    { 
     public void startRecording() 
     { 
      Calculator calc = new Calculator(); 
      System.Windows.Forms.MessageBox.Show(calc.calculation); 
      using (StreamWriter writer = 
      new StreamWriter("important.txt")) 
      { 
       writer.WriteLine("Line one"); 
       writer.WriteLine(calc.calculation); 
       writer.WriteLine("Line Two"); 
      } 
     } 
    } 
} 

但是当我调用startRecording()方法时,变量值没有被拉动。这是否是因为计算器的新类对象被创建,其中变量计算是空白的?任何帮助,将不胜感激。

+0

是的,就是这个原因。您应该将该实例作为startRecording – Forlani

回答

0

传递的类的实例的方法作为参数

class Record 
{ 

    public void startRecording(Calculator calculator) 
    { 
     System.Windows.Forms.MessageBox.Show(calculator.calculation); 
     using (StreamWriter writer = 
     new StreamWriter("important.txt")) 
     { 
      writer.WriteLine("Line one"); 
      writer.WriteLine(calculator.calculation); 
      writer.WriteLine("Line Two"); 
     } 
    } 
} 

public void toolStripLabel1_Click(object sender, EventArgs e) 
{ 
    Record rec = new Record(); 
    System.Windows.Forms.MessageBox.Show(calculation); 

    rec.startRecording(this); 
} 
+0

的参数传递。感谢您的帮助。括号内的“this”仅仅是对当前类“计算器”的引用吗? – RumbleJungle

+0

是的,这是对包含'toolStripLabel1_Click'方法的类的引用。 – Fabio

0

修改您的方法的StartRecording()取计算作为参数,并通过计算作为参数

rec.startRecording(calculation); 

public void startRecording(calculation_VariableType calculation) {} 

通过孔类代替只需传递类属性,因为在方法中只使用calculation属性。

相关问题