none
イベントの優先順位について。 RRS feed

  • 質問

  • いつも大変お世話になっております。

     

     

    イベントの優先順位を変更することは可能でしょうか。

    DataGridViewにてMouseDown、RowHeaderMouseClick

    を追加しました。しかし、肝心の行ヘッダーをクリックしても

    MouseDownイベントを発生してしまいます。

     

    いろいろと方法を考えたのですが優先順位を変更できれば

    一番シンプルにコーディングできると思いましたので、質問

    させていただきました。

     

    何卒よろしくお願い申し上げます。

     

    2008年2月24日 6:15

回答

  • 優先順位とは、イベントの発生する順序をさしてますか?

     

    無理です。

     

    イベントをどのように発生させるかは、クラスの設計者(今回は、GridViewの設計者)が決めます。

     

    ところで、試していませんが、DataGridView.RowHeaderMouseClickのヘルプには
    「ユーザーが行ヘッダーの境界線内をクリックしたときに発生します。」
    とあります。発生しませんか?
    また、MouseDown イベントをリッスンする必要がありますか?
    実際のコードはどのように書いているんでしょうか?

    2008年2月24日 7:11
  • MouseDownイベントで DataGridView.HitTest メソッドを使ったらどうでしょうか?

    (通常クリックイベントが発生するのは MouseUp だと思いますが・・・)

    RowHeaderMouseClick イベントは使う必要なくなります。

     

     

    2008年2月25日 4:48

すべての返信

  • 優先順位とは、イベントの発生する順序をさしてますか?

     

    無理です。

     

    イベントをどのように発生させるかは、クラスの設計者(今回は、GridViewの設計者)が決めます。

     

    ところで、試していませんが、DataGridView.RowHeaderMouseClickのヘルプには
    「ユーザーが行ヘッダーの境界線内をクリックしたときに発生します。」
    とあります。発生しませんか?
    また、MouseDown イベントをリッスンする必要がありますか?
    実際のコードはどのように書いているんでしょうか?

    2008年2月24日 7:11
  • 囚人さん

     

    早速のご返事、誠にありがとうございます。

     

    MouseDownイベントを削除した場合はRowHeaderMouseClickが呼び出されます。

    実際のコードはVisualC#のDesigner.csに任せております。

    FormTestのMouseDownイベントFormTest_MouseDownをDataGridViewでも使用しています。

     

    DataGridView内のどのエリアでも右クリックすればFormAを生成する。

    ただし、行ヘッダーを右クリックしたらFormBを生成する。

    上記のような処理を望んでおります。

     

    FormTestにて…

    this.dgv.MouseDown +=

    new System.Windows.Forms.MouseEventHandler(this.FormTest_MouseDown);


    this.dgv.RowHeaderMouseClick +=

    new System.Windows.Forms.DataGridViewCellMouseEventHandler(this.dgv_RowHeaderMouseClick);

     

    よろしくお願いいたします。

     

     

    2008年2月24日 11:43
  • MouseDownイベントで DataGridView.HitTest メソッドを使ったらどうでしょうか?

    (通常クリックイベントが発生するのは MouseUp だと思いますが・・・)

    RowHeaderMouseClick イベントは使う必要なくなります。

     

     

    2008年2月25日 4:48
  • えムナウさん

    囚人さん

     

     

    ご返事が遅れてしまい、申し訳ございません。

    DataGridView.HitTestにて解決いたしました。

    とても便利なメソッドですね。

     

    どうもありがとうございました。

    今後とも、よろしくお願いいたします。

     

    2008年2月26日 14:18