我会做到以下几点:
0)保持文本框中输入英尺/英寸/米等的数量/数...
1)使用下拉列表,而不是文本框。
2)不只是把文本作为下拉项目创建类并将它们添加为项目。下拉项目将调用其.ToString()来获取项目的文本值。
3)所有这些项目都可以继承基类/抽象类,以便传递qty值。
例如,您的下拉项可以是这样的:
我是一个C#的人,不必因此这里转换的时间是我的想法在C#代码表示。
public abstract class MeasureableItem
{
public string Name { get; private set; }
public MeasureableItem(string name)
{
Name= name;
}
public abstract decimal ConvertFrom(MeasureableItem from, decimal qty);
public override string ToString() { return Name; }
}
你会再定义一些类型:
public class Inches : MeasureableItem
{
public Inches() : base("Inches") {}
public override decimal ConvertFrom(MeasureableItem from, decimal qty)
{
if (from is typeof(Feet))
{
return qty * (decimal)12;
}
else{
throw new Exception("Unhandled conversion.");
}
}
}
public class Feet : MeasureableItem
{
public Feet() : base("Feet") {}
public override decimal ConvertFrom(MeasureableItem from, decimal qty)
{
if (from is typeof(Inches))
{
return qty/(decimal)12;
}
else{
throw new Exception("Unhandled conversion.");
}
}
}
你可以明显增加 “否则,如果{}”,以支持更多的转换。
要添加到下拉做到这一点:
MeasureableItem inches = new Inches();
MeasureableItem feet = new Feet();
dropDownFrom.Items.Add(inches);
dropDownFrom.Items.Add(feet);
你将不得不为“到”下拉菜单还,我不相信这些控件让你分享在多个项目之间创建一个专用实例控制。
什么是消耗时间,你写代码或我们读这个? –
编写代码。 – stackptr
代码不会自行写入。你可以写'如果x和y'或者一堆物体。有什么不同? –