0

この「API」を使用してから何年も経ちます(これは、これまでに出会った中で最も紛らわしいAPIである可能性があるため、引用符で囲んでください)。

私の必要性は非常に単純なものです。 セルのコンテンツが変更され、新しいコンテンツが何であるかを通知するイベントを購読したいと思います。

セルが変更されたことを通知するイベントが1,000件発生.Textしますが、セルに関連付けられたプロパティを照会すると、セルが何であるかではなくGridStyleInfo、常に何であったかが通知されます。

CurrentCellChangingこれは、またはのようなイベントには十分に公平CurrentCellValidatingです。Rendererこれらのイベント中に、現在のセルの ''にその値を尋ねることができることを読みました。

私には正しくないように思われるのは、サブスクライブするときですCurrentCellValidated-セルのテキストはまだ古い値です。つまり、CurrentCellValidated (私が思うに)セルの内容が変更され、検証が開始され、検証が終了し、検証が成功したことを意味しますが、検証されたものとそれはどこにありますか?

StackOverflowに関する次の質問がどうなるかはわかっています。ヒントをお伝えします。「SyncFusion」、「Grid」、「Alternative」という単語が含まれています。

乾杯、

スティーブ

4

2 に答える 2

2

CurrentCellValidatedイベントは、変更された値が基になるスタイルオブジェクトに移動される前に発生します。変更された値が基になるスタイルオブジェクトに移動された後に変更をキャッチする場合は、CurrentCellAcceptedChangedイベントを使用してみてください。

これは、両方のイベントの使用方法を示す例です。

        private void Form1_Load(object sender、EventArgs e)
        {{
            this.gridControl1.CurrentCellValidated + = new EventHandler(gridControl1_CurrentCellValidated);
            this.gridControl1.CurrentCellAcceptedChanges + = new CancelEventHandler(gridControl1_CurrentCellAcceptedChanges);
        }

        void gridControl1_CurrentCellAcceptedChanges(オブジェクト送信者、CancelEventArgs e)
        {{
            GridCurrentCell cc = gridControl1.CurrentCell;
            Console.WriteLine( "gridControl1_CurrentCellAcceptedChangesセル({0}、{1})が次のように変更されました:{2}"、cc.RowIndex、cc.ColIndex、gridControl1 [cc.RowIndex、cc.ColIndex] .CellValue);
        }

        void gridControl1_CurrentCellValidated(オブジェクト送信者、EventArgs e)
        {{
            GridCurrentCell cc = gridControl1.CurrentCell;
            Console.WriteLine( "gridControl1_CurrentCellValidated cell({0}、{1})changed to:{2}"、cc.RowIndex、cc.ColIndex、cc.Renderer.ControlText);
        }
于 2010-02-16T23:11:03.687 に答える
2

Clayが言ったように、CurrentCellAcceptedChangesイベントは、GridStyleInfoに格納された後に値を取得するための正しい場所になります。

さらに情報を追加する-グリッドは、検証を行う前にCurrentCellValidatingを発生させます。GridStyleInfoを見ると、CellValueType(int、decimal、datetimeなど)、Format、CultureInfoなどのプロパティがあります。これらのプロパティを設定すると、Gridはこれらに基づいてセル値を解析します。バインドされたコントロール(GridDataBoundGridまたはGridGroupingControl)の場合、データソースのスキーマ(使用可能な場合)から読み取ります。

したがって、CurrentCellValidatingは検証の前に起動され、CurrentCellValidationは、Gridが解析を実行した後、GridStyleInfo.CellValueに保存する前に起動されます。

于 2010-02-16T23:22:40.573 に答える