1

ユーザーが各ドキュメントにアクセスするためにナビゲートするbaiscドキュメントデータ(名前、タイプ)を示すデータグリッドビューがあります。ナビゲーションが発生すると、リッチテキスト ボックスに各ドキュメントの最初のページが表示されます。ただし、ドキュメントごとに複数のページが存在する可能性があるため、ページは別の BindingSource で管理されるため、ユーザーはそれらを「めくって」変更することができます。

ユーザーがドキュメント名またはいずれかのページの情報を変更する場合、[更新] ボタンを使用するか、datagridview 内の別のドキュメントに移動することにより、これらを保存するための 2 つの選択肢があります。

すべてのバインディング ソースが「静的」状態にあるため、ボタンは問題ありません。

ただし、datagridview は「行変更」イベントを提供しないため、2 番目のオプションに問題があります。ユーザーが列に並んでいる可能性があるため、「RowLeave」イベントは適切ではありませんが、リッチテキスト ボックスをクリックして対応するページを編集すると、もちろん「RowLeave」イベントが発生します。ユーザーが実際にドキュメントを変更したときにのみイベントをキャプチャしたい。

Documents BindingSource の "CurrentChanged" および "PositionChanged" イベントを試しましたが、どちらも "Current" ポインターが変更された後に発生するため、更新の正しいコンテキストがありません。更新中にコンテキストを取り戻すために使用されるグローバルな「CurrentPosition」変数を使用できますが、それはエレガントではないようです。これにはかなり慣れていないので、何かを見逃していると思いますので、何か助けていただければ幸いです。

ありがとう、ジェームズ

4

1 に答える 1

0

こんにちは bindingSourceCurrentItemChanged関数を使用してみてください

例:

private void bindingSource1_CurrentItemChanged(object sender, EventArgs e)
{
if (!dataGridView1.IsCurrentCellDirty) return; // or IsCurrentRowDirty
//Your code
}

私はそれが役立つことを願っています:)

于 2012-12-02T13:39:48.430 に答える