这是一个独立的应用程序,以后不需要保存数据,并且不会在用户之间共享数据,这是一个用户输入他们的数据并进行评估,该用户然后可以记下结果,但是以后都不需要将其存储到应用程序中。
这是一个分为两个阶段的评估,第一阶段要求用户根据列数来填写许多具有列结构细节的表格,第二阶段则需要对一些列值和一些列值求和需要进行平均,然后将评估的最终值显示到最终表格中。
在每种形式中仅输入数字,结果也将采用数字形式,然后显示在图形上。大约有30个用户输入文本框,这些文本框被输入到从父表单的按钮弹出的输入表单中,然后对每个父表单的每一列进行评估的第一阶段。使用此EasyTabs解决方案,每个父表单都呈现到新选项卡上。我在网上找到的WinForms-YouTube [^]中使用EasyTabs创建带有Chrome样式选项卡的C#应用程序。
我绝对是C#的初学者,所以我不知道如何从每个表格中获取一个值并将总和或平均值显示到最终表格中(如果我不知道会出现多少个表格)在运行期间针对每个用户,因为每个用户会有不同的数量,我当时想这可能是运行期间的某种循环,但是我不确定那是什么样。
与朋友交谈后,他们推荐了一种带有保存和刷新按钮的表格,该表格将数据保存到文件中,然后再进行检索会更好,但是说有10种不同的用户输入值需要从每种形式中选取然后进行平均或求和,我开始学习StreamReader和StreamWriter以及文件在C#中的工作方式,但是要弄清楚如何对文件中的数据进行布局,如何获取C#确实很困难。将正确的值加在一起等等
解决此问题的最佳方法是什么?
谢谢您的帮助。
答案 0 :(得分:0)
如果用“表格”来表示WinForms对表格的定义(基本上是一个新窗口),那么我建议您看看this post,其中描述了如何从一个表格向另一个表格获取数据。>
要使TextBox仅接受数字,如果要允许空输入,可以使用正则表达式验证^[0-9]*$
,如果希望至少一位数字,可以使用^[0-9]+$
。如果也要允许负数,则为^(\+|-)?[0-9]$
。注意:所有这些都将允许前导零。对于小数,还需要允许使用句点。 ^(\+|-)?[0-9]*(\.[0-9]+)?$
。如果需要其他内容,请阅读正则表达式。 This website可以帮助您设计和测试它们。
要从文本框中获取数字,您需要解析文本框中的文本。 dotNet已经具有很多功能。例如Int32.TryParse()
,或者如果您希望它引发异常Int32.Parse()
。其他类似。看看MSDN文档以了解如何使用它们。
关于平均:建立一个数据库,连接到它,然后使用它来计算一个数字的平均值,似乎是一种相当round回的处理方式。在编程中,您告诉计算机该怎么做。因此,如果有人告诉您计算平均值,您会把数字写在书中然后将其发送给某人为您计算吗?当然不是。
您可以在代码中将所有数字加在一起,然后除以数字数量。但是,还有一个更简单的解决方案。将所有数字加到List<int>
上并称为.Sum()
方法,然后除以其返回的.Count()
方法。
仅当您要在用户输入之间关闭程序或要记录输入时,才需要将数据保存到文件中。
不过,从文件中写入和读取数字相当简单。查看Microsoft提供的以下教程:Write to file,Read from file,Read file one line at a Time。写入文件使用与System.Console完全相同的方法,只是您使用文件流而不是StdIO。
对于数据布局,有几种合理的变体。对于简单的事情,您可以自己制作(即文件中的位置决定了数据的位置,或者每个数据点之前都有一个描述符,例如inputA: 24
)。对于更复杂的数据,我会考虑为您的数据创建一个类,然后对数据进行序列化,例如使用流行的Newtonsoft JSON库或XML,而不必担心文件的结构。