[問題] wpf路由事件的一些問題

看板C_Sharp (C#)作者 (Xeno)時間12年前 (2012/11/27 10:19), 編輯推噓0(002)
留言2則, 1人參與, 最新討論串1/2 (看更多)
剛入門不久,寫了幾個小程式就碰上路由事件的處理 MSDN看完還是有些地方不太明白 MSDN上寫說路由事件的策略分為三種,其中direct就是winform使用的事件模式 只有控制項本身會執行此事件,不會繼續往父項跑,如果我想讓一個控制項使用 策略為direct的事件,是否得自己宣告一個新事件,因為內建事件的策略好像都 是bubble,也找不到可以對單一事件策略修改的方法 以上問題的產生是因為我寫了一個程式,可以用滑鼠直接對程式的window進行拖拉放大 等動作,但因為路由事件的關係,window下的控制項都吃到MouseDown、MouseMove這些 事件,變得無法正常使用了。我嘗試用e.Handled=true來擋掉window.MouseDown的執行, 但是一個控制項就得寫一次,而且有些控制項的MouseDown還不會觸發,變得擋不住(像 textBox就只能用previewMouseDown才能觸發),如果控制項一多,一定會變得很複雜 想請問是否有方法可以讓事件只讓控制項本身使用,底下的成員不會去觸發? 而不是得讓底下成員一個一個去擋bubble -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.204.238.107 ※ 編輯: Beramode 來自: 123.204.238.107 (11/27 10:22) ※ 編輯: Beramode 來自: 123.204.238.107 (11/27 10:32)

11/27 12:17, , 1F
剛剛還發現TextBox的gotFocus在PreviewMouseDown之後
11/27 12:17, 1F

11/27 12:18, , 2F
如果在前面寫e.Handled=true focus就不能執行了...
11/27 12:18, 2F
文章代碼(AID): #1Gj2CWGr (C_Sharp)
討論串 (同標題文章)
文章代碼(AID): #1Gj2CWGr (C_Sharp)