C#-文本框不使用最近的输入
我的问题是textbox(textDWT)使用其初始值进行计算,而不是用户在表单上键入的值。每次调用注释中提到的@Equalsk时,您都在创建C#-文本框不使用最近的输入,c#,textbox,C#,Textbox,我的问题是textbox(textDWT)使用其初始值进行计算,而不是用户在表单上键入的值。每次调用注释中提到的@Equalsk时,您都在创建Form1的新实例 您可以只传递现有文本框的值: namespace NewEEDICalculator { public partial class Form1 : Form { Calculations cal = new Calculations(); public Form1() {
Form1
的新实例
您可以只传递现有文本框的值:
namespace NewEEDICalculator
{
public partial class Form1 : Form
{
Calculations cal = new Calculations();
public Form1()
{
InitializeComponent();
}
public void btnCalculate_Click(object sender, EventArgs e)
{
groupBoxResult.Visible = true;
textShipType.Text = cal.Capacity();
}
}
}
public class Calculations
{
public string Capacity()
{
Form1 f1 = new Form1();
double DWT = Convert.ToDouble(f1.textDWT.Text);
double cap;
switch (f1.textShipType.Text)
{
case "CON":
cap = 0.7 * DWT;
break;
default:
cap = DWT;
break;
}
string c = cap.ToString();
return c;
}
}
您正在创建
Form1
的新实例,并在计算中使用该实例,作为新实例,它不会键入任何值。如果存在现有实例,则需要使用该实例,或者使用f1.Show()代码>以便他们可以输入值。Equalsk所说的额外内容:您应该避免在计算类中依赖GUI代码。我建议将其签名改为公共字符串容量(字符串船型,双dwt)
谢谢@Equalsk&Fildor您向我介绍了这个概念。我很抱歉在这个新手错误上浪费了你的时间,再次感谢你鼓舞人心的支持。非常感谢你纠正我对这个概念的误解。那个例子从精神上和身体上解决了我的问题。
public class Calculations
{
public string Capacity(double DWT, string shipType)
{
double cap;
switch (shipType)
{
case "CON":
cap = 0.7 * DWT;
break;
default:
cap = DWT;
break;
}
string c = cap.ToString();
return c;
}
}
public partial class Form1 : Form
{
Calculations cal = new Calculations();
public Form1()
{
InitializeComponent();
}
public void btnCalculate_Click(object sender, EventArgs e)
{
groupBoxResult.Visible = true;
double dwt = Convert.ToDouble(textDWT.Text);
textShipType.Text = cal.Capacity(dwt, textShipType.Text);
}
}