自定義控制項

2022-03-14 15:22:46 字數 1381 閱讀 1515

在開發wince的過程中使用到了有多個輸入框,在這些輸入框都輸入值後將這些輸入框的值傳遞到datagrid中的需求,心想這種東西以後還會用,正好也學習一下winform使用者控制項的用法,就把它寫成了乙個控制項

實現效果圖和開發圖(wince的窗體介面比較難看...):

其中用紅框框起來的是乙個使用者控制項,目前實現的功能是根據傳遞的引數動態生成label,textbox,和gridview,也就是說使用的時候只需要給這個控制項設定乙個屬性就行了

開發這個使用者控制項還是有點內容的,拿出來分享一下

1.在自定義控制項的時候需要新增屬性(listheaderstr),因為感覺這個屬效能顯示在可視開發介面的屬性欄裡,感覺應該比較複雜,其實,只要直接在使用者控制項類中新增屬性就行了

public

string listheaderstr

想引用剛剛建立的使用者控制項到vs的工具欄中需要在「工具欄」中點選右鍵選擇「選擇項」,引入使用者控制項編輯過的exe或dll檔案

只是定義了乙個輸入框,在自定義的控制項中對keydown事件做了一些處理,讓其能夠在使用者點選回車鍵的時候能夠轉換到下乙個輸入框(類似於tab)但是手持機上沒有tab鍵,只有ok(回車),所以就有了這個控制項,但是當使用者需要對該控制項做其他處理,如:需要捕獲該輸入控制項的lostfocus,keydown等事件時,如果直接使用inbox.lostfocus或inbox.keydown(inbox 是自定義控制項名),使用者其實是捕獲不到的,因為使用者的真正需求應該是捕獲inbox中的textbox的這些事件,所以直接用於控制項上無法捕獲,這裡我使用重寫事件的方法,在自定義的控制項中加上如下事件:

public

event eventhandler lostfocus;

public

event eventhandlerkeydown;

大家可以看出,這些時間是和control中的事件重名的,對這些時間進行了重寫。

然後在inbox中的textbox的事件被激發時,激發我重寫的事件,來把這種影響傳遞下去

private

void textbox1_keydown(object sender, keyeventargs e)

private

void textbox1_lostfocus(object sender, eventargs e)

}

自定義控制項 自定義鐘錶

private context mcontext 畫筆 private paint mpaint 控制項的寬 private int mwidth x方向的圓心座標 private int center 鐘錶的半徑 private int mradio 圓環的寬 private int stroke...

自定義控制項

首先是以下這幾項,attribute defaultproperty指定元件的預設屬性,toolboxdata指定當從ide工具中的 工具箱中拖動自定義控制項時為它生成的預設標記 defaultproperty text toolboxdata mycontrol runat server 上面這些...

自定義控制項

新聞管理 using system using system.collections.generic using system.linq using system.web using system.web.ui using system.web.ui.webcontrols namespace ne...