C#-文本框不使用最近的输入

C#-文本框不使用最近的输入,c#,textbox,C#,Textbox,我的问题是textbox(textDWT)使用其初始值进行计算,而不是用户在表单上键入的值。每次调用注释中提到的@Equalsk时,您都在创建Form1的新实例 您可以只传递现有文本框的值: namespace NewEEDICalculator { public partial class Form1 : Form { Calculations cal = new Calculations(); public Form1() {

我的问题是textbox(textDWT)使用其初始值进行计算,而不是用户在表单上键入的值。

每次调用注释中提到的@Equalsk时,您都在创建
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);
    }
}