2016-08-02 6 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

Спасибо за помощь. Является ли это «в скобках» ссылкой только на текущий класс «Калькулятор»? – RumbleJungle

+0

Да, это ссылка на класс, который содержит метод 'toolStripLabel1_Click'. – Fabio

0

Измените метод StartRecording(), чтобы принять расчет в качестве параметра и передать расчет в качестве аргумента

rec.startRecording(calculation); 

public void startRecording(calculation_VariableType calculation) {} 

Вместо класса прохождения отверстия просто передайте свойство класса, поскольку в вашем методе используется только свойство calculation.