0

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

4

2 に答える 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 に答える