2016-05-19 3 views
-2

Проблема в том, что мой код просто читает текстовые поля только в первый раз, когда я делаю какие-либо изменения в текстовые поля, которые он не читает.Мой код читает текстовое поле только один раз

Это код формы с 2 текстовыми полями.

public partial class Form1 : Form 
{ 
    double tb1, tb2; 

    public Form1() 
    { 
     InitializeComponent(); 

    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     Form1 forming = new Form1(); 
     Reading objR = new Reading(forming); 

     tb1 = double.Parse(textBox1.Text); 
     tb2 = double.Parse(textBox2.Text); 


     textBox4.Text= objR.mAdd(tb1,tb2).ToString(); 
     textBox5.Text = objR.mAdd2().ToString(); 

    } 
} 

А класс, где я пытаюсь читать текстовые поля заключается в следующем:

class Reading 
{ 
    double _tb1, _tb2; 



    public Reading(Form1 form) 
    { 
     this._tb1 = double.Parse(form.textBox1.Text); 
     this._tb2 = double.Parse(form.textBox2.Text); 

    } 
    public double mAdd(double a, double b) 
    { 

     return a + b; 
    }  


    public double mAdd2() 
    { 
     return _tb1 + _tb2; 
    } 
} 

Я думаю, что Reading objR = new Reading(forming); читает TextBoxes но они считываются только один раз, когда я нажимаю мою кнопку еще раз его просто дает мне такую ​​же информацию, я добавил метод mAdd, чтобы убедиться, что текстовые поля используются правильно.

Что я могу сделать, чтобы на самом деле прочитать новейшие данные в текстовых блоках?

ответ

0

Во-первых, это излишняя передача всей формы в ваш конструктор класса Reading. Почему бы просто не создать конструктор с двумя аргументами double? Во-вторых, если вы должны проходят форму, затем снимите Form1 forming = new Form1(); и замените следующую строку с Reading objR = new Reading(this);

+0

Это просто тест, который я сделал, мне нужно использовать больше типов переменных. спасибо Большое –

0
public partial class Form1 : Form 
{ 
    double tb1, tb2; 
    private void button1_Click(object sender, EventArgs e) 
    { 
     Reading objR = new Reading(); 

     tb1 = double.Parse(textBox1.Text); 
     tb2 = double.Parse(textBox2.Text); 

     textBox4.Text= objR.mAdd(tb1,tb2).ToString(); 
     textBox5.Text = objR.mAdd2().ToString(); 
} 

public class Reading 
{ 
    public double Reading(double a,double b) 
    { 
     _tb1= a; 
     _tb2 = b; 
    } 
    public double mAdd(double a, double b) 
    { 
     return a + b; 
    }  
    public double mAdd2() 
    { 
     return _tb1 + _tb2; 
    } 
} 
0

Основная причина вы передаете новый экземпляр Form1 к классу чтения и не где текстовые поля, которые вы меняете.

Просто добавьте ответ ffa.

При этом возвращаемое значение класса чтения mAdd и mAdd2 будет таким же.

private void button1_Click(object sender, EventArgs e) 
{ 
    tb1 = double.Parse(textBox1.Text); 
    tb2 = double.Parse(textBox2.Text); 
    Reading objR = new Reading(tb1, tb2); 
    textBox4.Text= objR.mAdd(tb1,tb2).ToString(); 
    textBox5.Text = objR.mAdd2().ToString(); 
} 


class Reading 
{ 
    double _tb1, _tb2; 

    public Reading(string tb1, string tb2) 
    { 
     this._tb1 = double.Parse(tb1); 
     this._tb2 = double.Parse(tb2); 

    } 
    public double mAdd(double a, double b) 
    { 
     return a + b; 
    } 

    public double mAdd2() 
    { 
     return _tb1 + _tb2; 
    } 
} 
Смежные вопросы