我的代码只读了一次文本框

时间:2016-05-19 01:16:44

标签: c# textbox

问题是我的代码只是第一次阅读文本框,而且我对文本框进行了任何更改,它没有读取新的文本框。

这是包含2个textBoxes的表单代码。

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);读取TextBox但它们只读取一次,当我再次单击我的按钮时它只是给我相同的信息,我添加方法mAdd以确保文本框正确使用

如何准确读取文本框中的最新数据?

3 个答案:

答案 0 :(得分:0)

首先,将整个表单传递给Reading类'构造函数是不合适的。为什么不只有一个带有两个double参数的构造函数? 其次,如果您必须传递表单,请移除Form1 forming = new Form1();并将下一行替换为Reading objR = new Reading(this);

答案 1 :(得分: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;
    }
}

答案 2 :(得分: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;
    }
}