C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.94664 の関連記事表示

<< 0 >>
■94664  ClickとDoubleClickを判別したい
□投稿者/ お米粒 -(2020/04/30(Thu) 10:28:13)

    分類:[VB.NET/VB2005 以降] 

    WindowsForm上に配置した1つのコントロールにClickイベントとDoubleClickイベント両方を書いて、
    DoubleClick時にはClickイベントを走らせないということはできるのでしょうか
    ちなみに、DoubleClickを右クリックとかCtrl+Clickにする方向は最終手段だと考えています。
親記事 /過去ログ164より / 関連記事表示
削除チェック/

■94665  Re[1]: ClickとDoubleClickを判別したい
□投稿者/ とっちゃん -(2020/04/30(Thu) 11:05:10)
    No94664 (お米粒 さん) に返信
    > WindowsForm上に配置した1つのコントロールにClickイベントとDoubleClickイベント両方を書いて、
    > DoubleClick時にはClickイベントを走らせないということはできるのでしょうか
    > ちなみに、DoubleClickを右クリックとかCtrl+Clickにする方向は最終手段だと考えています。
    >
    ダブルクリックは、クリックの後、一定時間内にもう一度クリックすると発生します。
    WindowsForms でどうなってるか確認したことはないですが、Windowsの仕組みそのままだとすると
    ダブルクリックすると、Clickイベントの後一定時間内にDoubleClick イベントが送られてくると思います。

    なので、Click イベントではダブルクリック時間でFormsのタイマーを発動し、ダブルクリックが来たら
    タイマーをキャンセルして、ダブルクリックイベントを実行、タイマー通知が来たら
    本来のクリックイベント処理を実行という形で作るのが一般的です。

    ダブルクリックの時間は System.Windows.Forms.SystemInformation.DoubleClickTime で取得できます。

    https://docs.microsoft.com/ja-jp/dotnet/api/system.windows.forms.systeminformation.doubleclicktime?view=netcore-3.1
記事No.94664 のレス /過去ログ164より / 関連記事表示
削除チェック/

■94668  Re[2]: ClickとDoubleClickを判別したい
□投稿者/ furu -(2020/04/30(Thu) 12:17:36)
    2020/04/30(Thu) 12:18:24 編集(投稿者)
    2020/04/30(Thu) 12:18:17 編集(投稿者)

    No94665 (とっちゃん さん) に返信
    > なので、Click イベントではダブルクリック時間でFormsのタイマーを発動し、ダブルクリックが来たら
    > タイマーをキャンセルして、ダブルクリックイベントを実行、タイマー通知が来たら
    > 本来のクリックイベント処理を実行という形で作るのが一般的です。
    厳密に作ると
    タイマー通知来る前に他のコントロールのイベント来たら(マウス動いたら?)
    本来のクリックイベント処理しないといけないですね。
    大変そう。

     コントロールAのクリック(ダブルクリック時間待ち)
     コントロールBのクリック
       ・タイマキャンセル
       ・コントロールAのクリックイベント処理
       ・コントロールBのクリックイベント処理

    以下の場合もある。

     コントロールAのクリック(ダブルクリック時間待ち)
     マウス移動
     コントロールAのクリック
       ・タイマキャンセル
       ・コントロールAのクリックイベント処理
       ・タイマ起動
記事No.94664 のレス / END /過去ログ164より / 関連記事表示
削除チェック/

■94667  Re[1]: ClickとDoubleClickを判別したい
□投稿者/ Azulean -(2020/04/30(Thu) 11:58:03)
    2020/04/30(Thu) 11:59:09 編集(投稿者)

    No94664 (お米粒 さん) に返信
    > DoubleClick時にはClickイベントを走らせないということはできるのでしょうか
    無理です。

    ダブルクリックを構成するクリック 2 連打の初回のクリックは発生します。
    とっちゃんさんがすでに書いているとおり、クリック→ダブルクリックは時間経過以外の判別方法がありません。


    > ちなみに、DoubleClickを右クリックとかCtrl+Clickにする方向は最終手段だと考えています。

    クリック→ダブルクリックと順次発生しても支障がないように、クリックの振る舞いを押さえておくが第一だと思います。
    Explorer あれば、単なるクリックであれば選択、ダブルクリックであれば選択+実行となっているように、ダブルクリックとクリックが連続発生しても問題ない仕様にしています。

    ダブルクリック受容時間はユーザーごとに設定でき、秒単位にも設定できるので「ダブルクリックでないと確定してからクリックの処理をする」はユーザービリティや反応が悪くなります。
    「最終手段」とは言わず、積極的にクリックとダブルクリックの仕様見直しを考えた方が良いでしょう。
記事No.94664 のレス / END /過去ログ164より / 関連記事表示
削除チェック/

■94666  Re[2]: ClickとDoubleClickを判別したい
□投稿者/ お米粒 -(2020/04/30(Thu) 11:56:23)
    No94665 (とっちゃん さん) に返信
    > ■No94664 (お米粒 さん) に返信
    >>WindowsForm上に配置した1つのコントロールにClickイベントとDoubleClickイベント両方を書いて、
    >>DoubleClick時にはClickイベントを走らせないということはできるのでしょうか
    >>ちなみに、DoubleClickを右クリックとかCtrl+Clickにする方向は最終手段だと考えています。
    >>
    > ダブルクリックは、クリックの後、一定時間内にもう一度クリックすると発生します。
    > WindowsForms でどうなってるか確認したことはないですが、Windowsの仕組みそのままだとすると
    > ダブルクリックすると、Clickイベントの後一定時間内にDoubleClick イベントが送られてくると思います。
    >
    > なので、Click イベントではダブルクリック時間でFormsのタイマーを発動し、ダブルクリックが来たら
    > タイマーをキャンセルして、ダブルクリックイベントを実行、タイマー通知が来たら
    > 本来のクリックイベント処理を実行という形で作るのが一般的です。
    >
    > ダブルクリックの時間は System.Windows.Forms.SystemInformation.DoubleClickTime で取得できます。
    >
    > https://docs.microsoft.com/ja-jp/dotnet/api/system.windows.forms.systeminformation.doubleclicktime?view=netcore-3.1

    教えていただいた情報を元に機能させることができました。
    ありがとうございました。
記事No.94664 のレス / END /過去ログ164より / 関連記事表示
削除チェック/

■94669  Re[2]: ClickとDoubleClickを判別したい
□投稿者/ furu -(2020/04/30(Thu) 12:22:46)
記事No.94664 のレス / END /過去ログ164より / 関連記事表示
削除チェック/

■94670  Re[3]: ClickとDoubleClickを判別したい
□投稿者/ Azulean -(2020/04/30(Thu) 15:10:11)
記事No.94664 のレス / END /過去ログ164より / 関連記事表示
削除チェック/

■94672  Re[4]: ClickとDoubleClickを判別したい
□投稿者/ furu -(2020/04/30(Thu) 15:31:01)
記事No.94664 のレス / END /過去ログ164より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -