Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 两个表单之间的静态变量和文本框_C#_Winforms - Fatal编程技术网

C# 两个表单之间的静态变量和文本框

C# 两个表单之间的静态变量和文本框,c#,winforms,C#,Winforms,我想到了使用MSVS2010在两个表单之间使用静态变量传输数据 我现在的工作方式有问题。Form2是我的主要用户交互屏幕,其中项目被扫描并显示到文本框中。当我使用Form4时,我希望能够减去一项,并在Form2的文本框中显示该描述,而不删除Form2屏幕上以前的数据 以下是我在表格4中使用的示例代码: else if (input_txtBox.Text == "E007C02A55EF937C") { secondForm.textBox

我想到了使用MSVS2010在两个表单之间使用静态变量传输数据

我现在的工作方式有问题。Form2是我的主要用户交互屏幕,其中项目被扫描并显示到文本框中。当我使用Form4时,我希望能够减去一项,并在Form2的文本框中显示该描述,而不删除Form2屏幕上以前的数据

以下是我在表格4中使用的示例代码:

        else if (input_txtBox.Text == "E007C02A55EF937C")
        {
            secondForm.textBox2.Text = "Snickers Bar.................-$0.99" + Environment.NewLine;
            input_txtBox.Text = ""; // clears textBox1
            input_txtBox.Text = "";
            Form2.Subtotal = Form2.Subtotal - Form2.Candy_Bar;
            Form2.Tax = Form2.Candy_Bar * Form2.Taxrate - Form2.Tax;
这是在单击按钮之后:

        Form2.Total = Form2.Subtotal + Form2.Tax;
        secondForm.textBox3.Text = Form2.Subtotal.ToString("#0.00");
        secondForm.textBox4.Text = Form2.Tax.ToString("#0.00");
        secondForm.textBox5.Text = Form2.Total.ToString("#0.00");
Form4中使用的变量在Form2中声明为公共静态十进制

有什么想法吗

我想到了使用MSVS2010在两个表单之间使用静态变量传输数据

为什么??这听起来像是
Form2
Form4
(两者都应该给出真实的名称,表明其目的)应该引用另一个-或者,两者都应该引用负责适当传输数据的公共数据模型


使用静态字段作为避免正确OO设计的一种方式肯定是一个坏主意-这会在短期内节省您的时间,但会导致代码难以遵循、难以测试,并且一旦您认为可能需要两个Form2实例,就会出错,每个都与Form4的实例关联…

最好运行一个单独的后台线程,作为表单的控件,这样您就可以使用后台运行的线程来控制所有变量并根据需要打开表单

您需要设置委托方法以允许线程和表单之间的安全访问,但这将比您建议的方式更高效、更容易


希望这能有所帮助。

我是C#的新手,我自学到目前为止,除了文本框数据被擦除外,这是我找到的工作方式之一。@ajaustin12:尽早自学良好的面向对象实践,这样你就不会养成坏习惯。静态变量通常是设计的味道。不总是,但经常。看看UI的各种OO设计,特别是MVVM,如果你能使用WPF或Silverlight的话。如果我对C#有更多的经验,这会有所帮助。不幸的是,我在自学,所以我不熟悉如何做到这一点。一个很好的选择是看一看黄皮书,帮助自己自学C。好的,我想我发现了我的问题。当我离开Form2时,它会隐藏它并删除数据,所以当Form4关闭时,它只会将数据从Form2添加到文本框中。有没有一种方法可以将所有数据保存到文本框中的字符串中并调用它?