コレクションにバインドされたDataGridView(.NET winforms)があります。フィールドの1つは、フィートで保存された距離です。ただし、グリッドは、システム設定に応じて、フィートまたはメートルで表示できる必要があります(ただし、常にフィートとして保存されます)。どうすればよいですか?CellParsingイベントを使用して、ユーザー入力時に値をフィート(表示設定がメートルの場合)に変換する必要があるように感じます。また、表示設定がメートルに設定されている場合は、CellFormattingイベントを使用して表示値をメートルに変換する必要があります。それは正しいと思いますか、それとももっと簡単な方法がありますか?
2 に答える
1
最も簡単な方法は、計算を適用するプロパティを追加することです。
[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 に答える
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 に答える