1

わかりました、これは奇妙なVB.NETグリッドの問題です。本当にシンプルだと思いますが、私には意味がありません。

バインディングソースからのデータを表示するグリッドがあります。CellContentDoubleClickを処理するメソッドがあります。これは、セルの値を取得し、それを使用して新しいルックアップを実行します。これにより、(異なる列を持つ)新しいデータソースが生成され、グリッドに再バインドされます。

グリッドのダブルクリックは機能しますが、新しいデータで再描画すると、シングルクリックでダブルクリックが発生します。これは、シングルクリックハンドラーであるかどうかに関係なく発生します。

興味深いのは、それが(私の場合は)トグルであるということです。ダブルクリックすると、再描画時にシングルクリックでダブルクリックコードが発生します。もう一度塗り直すときは、ダブルクリックする必要があります。

ダブルクリックコードはメッセージボックスを起動します-続行しないように指示した場合、再度起動するにはダブルクリックする必要があります。したがって、表示されるデータには依存しません。

シングルクリックに応答するモードの場合、すべてのコントロールをタブで移動してから、グリッド内の任意のセルをクリックすると、ダブルクリックが発生します。

私が何をしようとしても(他のコントロールにフォーカスを設定したり、グリッドを更新したりするなど)、グリッドをリセットするものは何もないように見えるので、一貫して機能します。

何か案は?

4

1 に答える 1

0

わかりました、私は答えを見つけました。データグリッド(少なくともVS.Net 2007では)には、「EditMode」という名前のプロパティがあります。これがEditOnEnter(デフォルトではない)に設定されている場合、この動作が発生します。リセット(またはEditOnKeystrokeOrF2に変更)すると、データグリッドは期待どおりに機能します(シングルクリックがダブルクリックのように機能することはありません)。

これは、スレッド、サブクラス化されたグリッドでテストした後です。名前を付けてください...最初にプロパティ設定を確認する必要があります....不平を言う...。

于 2010-07-06T18:28:24.727 に答える