1

EntityFrameworkの「テーブル」にデータバインドされたdatagridviewがあります。

    public ObjectSet<TEntity> tableData { get; private set; }
    private BindingSource tableBinding;

    public AuxiliaryTableEditor(ObjectSet<TEntity> something)
    {
        InitializeComponent();

        this.tableData = something;
        this.tableBinding = new BindingSource();
        this.tableBinding.DataSource = tableData;

        this.auxiliaryTableEditorGridView.DataSource = tableBinding;
    }

これは完全に正常に機能します。

問題は次のとおりです。ユーザーが行の編集/追加を開始した場合、セルで編集モードに入り、内容を消去してからタブまたはクリックすると、未処理の例外がスローされます(ほとんどのdb列と同様) nullを許可しない)。これは完全に正常で許容範囲内ですが、これらの例外をキャッチして処理できるようにしたいので、どこで/どのようにキャッチするかわかりません

.DataError.RowValidatingなど、datagridviewでいくつかの異なるイベントハンドラーを使用してみましたが、今は覚えていない他のいくつかのイベントハンドラーを使用しました...しかし、厄介な例外をキャッチできないようです。

どんな提案でも大歓迎です!

編集:例外は通常次のようなものであることを追加する必要があります:「ConstraintExceptionはユーザーコードによって処理されませんでした。このプロパティをnull値に設定することはできません」。

4

1 に答える 1

1

CellEditEndingまたはCurrentCellChangedイベントを試してください。

編集:または、プロパティのセッターにnull値を処理させることもできます。

public int Number
{
  get { return _number; }
  set
  {  
      if (null == value)
      {
          // handle here
      }
  }
}

編集:詳細については、空のフィールドを送信するときのEntityFrameworkエラーを参照してください。

于 2012-12-11T18:27:06.347 に答える