Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
tabControlの中でのマウスの右クリックの位置がすぐに表示されない
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=30474#CommentId83862
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
るきお
 (社会人)
投稿日時
2020/3/28 08:54:54
試してみたところ私の環境では1回右クリックしただけでメッセージが表示されました。
マウスのボタンが複数同時に押されたケースに対応できていないのかなと思い、と私のマウスでボタンを同時に押してみたんですが、短い時間に複数のMouseDownイベントが発生するだけでkojiroさんの状況は再現できませんでした。
ただ、この動作はマウスの製品やドライバーなどによって再現状況が異なるということもありそうなので、私は再現できなくてもkojiroさんの環境ではこれが原因ということもあるかもしれません。
プログラム上は次のように書くと、複数のマウスボタンが押されている場合でもその中に右ボタンが含まれているかを判断してくれるようになります。
If
e.Button.HasFlag(MouseButtons.Right)
Then
つまり、
マウスの右ボタンだけが押されているのを判断するのか、
それとも、
マウスの1つ以上のボタンが押されており、その中に右ボタンが含まれているのを判断するのか
の違いです。
とはいえ、冒頭に書いたように私は複数ボタンが同時に押された状態でMouseDownイベントが発生するところは確認できなかったので机上の論かもしれません。ひとまずお試しください。
なお、ドラッグの開始点を判断するロジックとしてはkojiroさんのイベント内のロジックは一般的なものであり、私がコードレビューワーであれば、この判断ロジックは問題ない評価するか、せいぜい上記の修正を提案する程度です。
TabPage1でこれをやろうとしているところはかなり特殊ですね。PictureBoxなどが多いのではないかと思います。TabPage内にPictureBoxを目いっぱいの大きさで貼り付けるなど。ただ、今回の現象がコントロールの違いで発生するかはわかりません。
参考
https://docs.microsoft.com/ja-jp/dotnet/api/system.windows.forms.mousebuttons?view=netframework-4.8