问题是我的代码只是第一次阅读文本框,而且我对文本框进行了任何更改,它没有读取新的文本框。
这是包含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以确保文本框正确使用
如何准确读取文本框中的最新数据?
答案 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;
}
}