none
Mouse事件疑問 RRS feed

  • 問題

  • 想請教一個問題, 

    在Form內放一個Panel1, 然後寫Panel1的Mouse事件, 

    在Panel1上按下滑鼠右鍵觸發(MouseDown)事件, 按著右鍵不放(Mousemove),

    然後移動到Panel1外再放開滑鼠仍會觸發Panel1的MouseUp事件。

    以上這樣沒問題。

    但是如果在Panel1上再放上一個rectangleShape1時,

    在rectangleShape1上按下滑鼠右鍵觸發(MouseDown)事件, 按著右鍵不放(Mousemove),

    然後移動到rectangleShape1外再放開滑鼠就不會觸發rectangleShape1的MouseUp事件。

    請問該怎麼做, 可以讓rectangleShape1的MouseUp事件即使在離開rectangleShape1後放開也會觸發呢?



    2015年3月10日 上午 10:31

所有回覆

  • MouseLeave 事件

    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    2015年3月10日 上午 11:24
  • 不好意思, 我再補充一下

    我是做類似畫圖的功能, 放一個Panel當畫板

    我在Panel上畫方框(rectangleShape1),

    按下滑鼠(MouseDown)後記憶點位,移動滑鼠(MouseMove)時改變方框大小,放開滑鼠(MuuseUp)記下座標完成。

    在測試的時候,

    按著右鍵滑鼠遊標離開Panel再移回來Panel上時, 仍然可以觸發MouseMove事件改變方框大小,

    即使我滑鼠遊標離開Panel後放開, 仍然可以抓到Panel的MouseUp事件。

    以上這樣功能正常。

     

    接著如果我在剛剛畫的方框(rectangleShape1)內, 再畫一個方框(rectangleShape2)

    rectangleShape1的MouseDown, MouseMove, MouseUp寫一樣的功能

    但是測試的時候, 

    按著右鍵游標離開rectangleShape1後再移回來時, MouseMove事件就不會觸發,

    因此即使右鍵按著不放, 只要離開rectangleShape1後再移回來就無法改變rectangleShape2的尺寸

    當滑鼠在rectangleShape1外的地方放開, 也不會觸發MouseUp事件, 也無法記錄最後座標以判斷是否超出範圍。

    因為在Panel的Mouse事件可以做到, 但是在rectangleShape的Mouse事件卻無法做到

    想請問一下, 我是否遺漏了什麼?或該怎麼做?





    2015年3月11日 上午 01:28
  • 你所謂的畫rectangleShape 
    是程式執行期動態產生還是設計時候透過工具箱放到 panel1 ?


    以下為簽名檔,如果你愛拉椅子坐那就是你的問題。
    先查MSDN文件庫
    再用GOOGLE搜尋
    才到論壇來發問

    這是論壇不是技術支援中心
    沒有人得無償解答你的問題

    在標題或文章註明很急
    不會增加網友回覆速度

    2015年3月11日 上午 01:59
  • 你好, 在設計的時候就已經透過工具箱放了幾個rectangleShape 在Panel上了, 

    只是先Visable=false隱藏起來, 等到滑鼠按下後, 再顯示出來。

    畫第一個框就顯示rectangleShape1, 第二個框就顯示rectangleShape2, 依此類推。

    2015年3月11日 上午 02:51
  • VB 版置頂公告:關於Visual Basic 資源分享

    裡面那個 矩形、文字、橢圓 的微軟範例,包含 Online 創建一個圖形、拖拉、變更屬性,到了 VB2005 以後,微軟製作成 PowerPack 的元件外掛,自 VB2008 以後改 VB 內建,你可以參考該範例關於滑鼠動作的處理。


    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    2015年3月11日 下午 01:02