我有一个绑定到集合的 DataGridView (.NET winforms)。其中一个字段是以英尺为单位的距离。但是,网格需要能够以英尺或米为单位显示(但始终存储为英尺),具体取决于系统设置。我该怎么做呢?感觉好像我需要在用户输入时使用 CellParsing 事件将值转换为英尺(如果显示设置为米)。而且,如果显示设置设置为米,我还需要使用 CellFormatting 事件将显示的值转换为米。这听起来对还是有更简单的方法?
问问题
392 次
2 回答
1
你为什么不在你的数据模型中封装这个逻辑呢?
像这样
class SomeDataModel : DataModelBase {
public SomeEntityType Entity { get; private set; }
public float Distance {
get {
return MetrixConvertionHelper.ConvertAccordingToSistemSettings(this.Entity.DistanceInFeets);
}
set {
this.Entity.DistanceInFeets = MetrixConvertionHelper.ConvertDistanceBack(value);
}
}
}
其中MetrixConvertionHelper.ConvertAccordingToSistemSettings(float)
- 是你的辅助转换函数,SomeDataModel
- 是数据模型类,DistanceInFeets
- 实体类型的原始属性,由数据模型包装,MetrixConvertionHelper.ConvertDistanceBack(float)
- 是一个相反的辅助方法,它将当前单位转换为英尺
于 2011-11-14T18:45:49.220 回答
1
最简单的方法是 e 添加一个应用计算的属性:
[DisplayName("Distance (feet)")]
public decimal DistanceFeet {get;set;}
[DisplayName("Distance (metres)")]
public decimal DistanceMetres {
get { return FeetToMetres(DistanceFeet); }
set { DistanceFeet = MetresToFeet(value); }
}
就个人而言,我也使用米作为主要单位,但这只是我;)
现在只需将数据绑定到任何一个,或显示/隐藏列,您觉得方便。
于 2011-11-14T18:47:08.000 回答