我正在尝试使用组合框设计长度转换计算器,因此当用户从组合框列表中选择要执行的转换时,应用程序会修改指示“从”和“到”长度的标签因此。当用户输入“from”长度并单击Calculate按钮时,程序应执行转换并在文本框中显示结果。
应用程序应处理以下转换:
Miles to Kilometers 1 mile = 1.6093 kilometers
Kilometers Miles 1 kilometer = 0.6214 miles
Feet Meters 1 foot = 0.3048 meters
Meters Feet 1 meter = 3.2808 feet
Inches Centimeters 1 inch = 2.54 centimeters
Centimeters Inches 1 centimeter = 0.3937 inches
应用程序应检查用户输入的长度,以确保它是有效的十进制值。
我想我应该使用矩形数组来存储转换信息。但我有几个问题。
如何根据组合框中的用户选择来更改标签?
我应该将什么设置为组合框的文本属性?
我会为数组使用什么值类型?转换方程是阵列的成员吗?
我可以在计算按钮或组合框下输入吗?
我很擅长编程(显然)。任何帮助都会很精彩!
谢谢!
Kali
答案 0 :(得分:1)
我建议你定义一个Hashtable。 密钥将是转换类型,例如“MK”英里到公里,价值将是 转换率。 根据选定的值,您将知道如何计算它。
答案 1 :(得分:1)
我会为数组使用什么值类型?是转换 方程组成员?
您可以创建自己的原始长度类型,类似于Quantity模式。它可以在Length类本身中封装转换,也可以使用单独的Converter:
提供一个允许转换的简单界面很有用 数量直接,虽然转换工作通常最好留下 使用转换器对象。但是,如果你只有几个单位,那就是 更容易将它们直接嵌入数量类中。
答案 2 :(得分:1)
如何根据组合框中的用户选择来更改标签? 答案:在Designer属性中设置“SelectedIndexChanged”事件。
我应该将什么设置为组合框的文本属性? 答案:在Designer属性中将DropDownStyle设置为DropDown,然后将自动设置Text。
我会为数组使用什么值类型?转换方程是阵列的成员吗? 答案:双倍作为值类型。将值设置为米数。 例如。公里数为1000,里程数为1609.3 等式将是:
labelOutput.Text =(rates [comboBoxFrom.SelectedIndex] * Double.Parse(textBoxValue.Text)/ rates [comboBoxTo.SelectedIndex])。ToString(); //例如1000 * 1 / 1609.3 = 1.6093
我可以在计算按钮或组合框下输入吗? 答:您可以在两个组合框的SelectedIndexChanged或按钮的Click事件上执行此操作。
希望这会对你有所帮助。
答案 3 :(得分:0)
请查看我在Github的csunits项目。这个C#库提供了大量数量的单位转换,包括长度,还有一些示例GUI应用程序。
转换祝你好运!
Anders @ Cureos