DOBON.NET DOBON.NETプログラミング掲示板過去ログ

リストビューの右ブルクリックを禁止するには?

環境/言語:[フォームアプリケーション(.NET)]
分類:[.NET]

お世話になります。
リストビューであるデータが表示されているときに左のダブルクリックでその内容を取得しているのですが、同様に右ダブルクリックでもそれが可能となっています。これを右ダブルクリック禁止にするにはどうしたらよいでしょうか。

宜しくお願いいたします。
じゃんぬねっと です。

■No8570に返信(ひでさんの記事)
> これを右ダブルクリック禁止にするにはどうしたらよいでしょうか。

DoubleClick() イベントは、MouseDown() と MouseUp() が 2 連続で行われた時のイベントです。
そして、この 2 つのイベントには System.Windows.Forms.MouseEventArgs の引数があります。
そのメンバに Button プロパティがありますので、

  if (e.Button == MouseButtons.Left) {

のように判断して、左クリックであることを取得してください。



   /*******************************************
     * @Remarks    じゃんぬねっと
     * @Homepage  http://f57.aaa.livedoor.jp/~jeanne/
     * @Blog        http://www.ailight.jp/blog/jeanne/
     *******************************************/
お返事ありがとうございます。

現在VC++.NETにて、リストビューのDoubleClick(System::Object * sender, System::EventArgs * e)内に処理を記述していますが、どのようにMouseDown() と MouseUp() に結びつけるのでしょうか。DoubleClickの中で処理を記述するのではなく、MouseDown() と MouseUp()に処理を記述するということでしょうか。申し訳ありませんが、宜しくお願いします。
■No8572に返信(ひでさんの記事)
> 現在VC++.NETにて、

VC++.NET? (^-^;)

> どのようにMouseDown() と MouseUp() に結びつけるのでしょうか。
> DoubleClickの中で処理を記述するのではなく、MouseDown() と MouseUp()に
> 処理を記述するということでしょうか。

申し訳ありません、説明が判り難かったようですね。m(_ _)m
当方 VC++.NET の環境がございませんので、大雑把な例になってしまいますが、
以下を工夫してみてください。

Source:--------------------------------------------------------------------------------------------------

// プライベート メンバ
private:
    int mIntCount;

    // listView1 :: MouseDown()
    System::Void listView1_MouseDown(System::Object* sender, System::Windows::Forms::MouseEventArgs* e) {
        if (e->Button == System::Windows::Forms::MouseButtons::Left) {
            mIntCount++;
        } else {
            mIntCount = 0;
        }
    }

    // listView1 :: MouseUp()
    System::Void listView1_MouseUp(System::Object* sender, System::Windows::Forms::MouseEventArgs* e) {
        if (e->Button == System::Windows::Forms::MouseButtons::Left) {
            mIntCount++;
        } else {
            mIntCount = 0;
        }
    }

    // listView1 :: DoubleClick() 
    System::Void listView1_DoubleClick(System::Object* sender, System::EventArgs* e) {
        if (mIntCount >= 3) {
            MessageBox::Show("左のマウスボタンでダブルクリックしたんですね :)");
        }

        mIntCount = 0;
    }

---------------------------------------------------------------------------------------------------------



 /***************************************************
  * @Remarks     じゃんぬねっと
  * @Homepage    http://f57.aaa.livedoor.jp/~jeanne/
  * @Blog        http://www.ailight.jp/blog/jeanne/
  ***************************************************/
解決できました。本当にありがとうございました。
マウスイベントが2回ずつ実行されるんですね、目からうろこでした(T_T)
どうもありがとうございました。
解決です!
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板