自定義控制項事件傳遞過程

2021-06-04 19:48:20 字數 2351 閱讀 7985

自定義控制項事件傳遞過程

本人使用自定義控制項發現如果自定義控制項被另乙個控制項全部覆蓋,當雙擊或 單擊窗體時,事件引起控制項事件不是主體事件,多次測試才找到這個技巧。

首先加乙個自定義控制項,然後在自定義控制項窗體上新增乙個panel控制項,並讓控制項fill全部面板,當控制項例項化時,我們在操作拖拉主介面的上的控制項時,能實現自定義控制項,在自定義控制項中首先要重寫事件

shadows event mousedown(sender as object, e as system.windows.forms.mouseeventargs)

shadows event mouseup(sender as object, e as system.windows.forms.mouseeventargs)

shadows event mousemove(sender as object, e as system.windows.forms.mouseeventargs)

『新的事件要用shadows來覆蓋原事件。接下來要對事件進行載入操作,並將panel對應的事件傳遞給主窗體對應的事件,這裡需要'注意的傳遞事件,在傳遞時sender不是panel主體而是自定義控制項的自身。所以要用me來替代sender.
private sub ucshow_load(sender as system.object, e as system.eventargs) handles mybase.load

addhandler paneltitle.mousedown, addressof ucshow_mousedown

addhandler paneltitle.mouseup, addressof ucshow_mouseup

addhandler paneltitle.mousemove, addressof ucshow_mousemove

end sub

private sub ucshow_mousedown(sender as object, e as mouseeventargs)

raiseevent mousedown(me, e)

end sub

private sub ucshow_mouseup(sender as object, e as mouseeventargs)

raiseevent mouseup(me, e)

end sub

private sub ucshow_mousemove(sender as object, e as mouseeventargs)

raiseevent mousemove(me, e)

end sub

在主窗體中,使用時還要對相應的事件進行再次重寫

addhandler ctlucshow.mousemove, addressof picturebox_mousemove

addhandler ctlucshow.mouseup, addressof picturebox_mouseup

addhandler ctlucshow.mousedown, addressof picturebox_mousedown

另要還要對委託執行的事件再次重寫一下,這樣此過程才能完成 、

public x, y as integer

private sub picturebox_mousedown(byval sender as object, byval e as system.windows.forms.mouseeventargs)

x = e.x : y = e.y

end sub

private sub picturebox_mouseup(byval sender as object, byval e as system.windows.forms.mouseeventargs)

end sub

private sub picturebox_mousemove(byval sender as object, byval e as system.windows.forms.mouseeventargs)

if not moveenable then exit sub

if x = e.x and y = e.y then exit sub

if e.button = windows.forms.mousebuttons.left then

sender.left = sender.left + e.x - x

sender.top = sender.top + e.y - y

end if

end sub

flex 自定義控制項 事件

自定義控制項 自定義事件 引子 前面主要用action script3 來定義事件 在此用mxml 來自定義控制項 自定義事件 一 源 見1是通過新建new mxml conpoment 同時,在填入資訊時選擇繼承自panel 1 loginform.mxml event name logineve...

C 自定義控制項和自定義事件

今天在專案開發的過程中,因為好幾個頁面都要用到同乙個分類控制項,就想著把它做成乙個自定義控制項,然後隨託隨用。在網上找了些列子,自定義控制項的寫法不用多說,主要說一下,如何將控制項的事件,封裝到自己定義的控制項的自定義事件裡面。這裡同時也當作對自定義事件的乙個複習吧。首先控制項是乙個由treelis...

自定義控制項的事件

之前做了一些自定義控制項 user control 有一些內部控制項的事件想要發布出來,但是查了一下文件,發現一篇文章裡面寫的方法非常複雜,又是要委託,又是要註冊的,反正看得暈暈乎乎的,乾脆就放棄了。今天又遇到了這個問題,得到建軍的幫助,解決啦,發現非常簡單啊。貼個例子在下面 public even...