私はデータテーブルのイベントとRowChanging
の違いを理解しようとしています。Rowchanged
MSDN ブログを確認しましたが、実質的な違いは見つかりませんでした。
これが私が得たものです:
- Both Use same
Datarowchangeeventargs
: 同じセットのイベント データがあります。すなわち;e.Action
とe.row
。
ウォッチ ウィンドウで、これらのイベント データに変更があるかどうかを確認しましたが、類似していました。Cancel が含まれていた場合RowChanging
、それは検証を意味していたはずです。
全体として、2 つのイベントが同じ意味である場合、なぜこのイベントが発生するのか混乱しています。
私の混乱を解消してください。
これが、回答から得たポインターに基づいて見つけた私の違いです。
列にいくつかの行を追加し、両方のイベントを呼び出しました。e.Row が実際に提案された行であることに気付いたときに、変更イベントと変更イベントの両方で e.Row.RejectChanges() を実行しようとしました。そのため、Rejectchanges で「行変更イベント内で Canceledit() をキャンセルできません」というエラーが表示されました。しかし、RowChanged イベントで拒否が発生することを許可していました。次のシーケンスが発生しました: 1.RowChangingEvent e.Action=Added (複数の行をテーブルに追加していたため) e.Row.RowState=Detached. 2. RowChanged Event e.Action=Added e.Row.RowState=Added (ここで変更され、データテーブルに追加されたため、赤色で表示)
例外については、「行変更イベントで cAll CancelEdit() を実行できません」というメッセージが表示されました。
rowChanged イベントで、「この行はテーブルから削除されており、データがありません。BeginEdit() により、この行に新しいデータを作成できます。」
上記の行が変更されたイベント例外を案内してください。