Windows Form程式設計中的MVC

2021-09-05 14:31:39 字數 637 閱讀 4504

mvc包括模型、檢視和控制器三個角色,模型代表具體的資料和行為,檢視表示資料的顯示,控制器則是獲得使用者操作,改變資料,控制檢視顯示。其核心在於從模型中分離檢視,以及從檢視中分離控制器。

對於windows form程式(vb 6是類似的),控制器基本是系統內建的窗體和各類元件(控制項),不需要寫獲得使用者操作的**,只需要在動作的事件響應的**中寫具體的操作就可以了。

下來是模型的設計,一般是乙個或一組類,該類有具體的資料和操作**。

對於資料顯示,即檢視,可以是乙個方法或者一組方法,或者乙個類。關鍵在於資料的重新整理。這裡有2種方法:

第一,在模型中定義一些事件,代表資料的更新或者更改,在檢視中訂閱這些事件,在事件觸發方法裡寫具體的檢視更新**;

第二,在動作完成後的**中呼叫重新整理資料顯示的方法或者類,改變檢視;

個人偏好第一種方法,web下的程式肯定是使用第二種方法,這樣,模型類的也更純粹;但對於form程式,有事沒事更新介面資料似乎不好,而且儲存使用者狀態,例如當前選擇的資料(**)也比較麻煩。另外,乙個操作最終更新的資料有時是需要上下文,是不確定的,通過事件觸發,好像易於控制一些,封裝性也好一些。

雖然大部分的windows form程式設計,不需要注意mvc角色,也可以很好的完成,但個人覺得,從中學習一些東西,提高程式設計和**質量還是值得的。

Windows Form 中的滑鼠事件

windows form 中的滑鼠事件 在處理滑鼠輸入時,通常會想要知道滑鼠指標位置和滑鼠按鈕狀態。這個主題提供關於如何從滑鼠事件取得此項資訊的詳細內容,同時還說明滑鼠 click 事件在 windows form 控制項中的引發順序。如需所有滑鼠事件的清單和描述,請參閱滑鼠輸入在 windows ...

在IE中託管Windows Form

net的偉大之處之一是它提供的與ie的無縫整合能力。例如,我們甚至能夠在使用者不知道的情況下從ie中啟用乙個windows forms控制項。儘管利用了由.net clr提供的code access security的所有功能,但這是在無需進行註冊的情況下完成的。當開發windows forms控制...

怪異的Windows Form事件

因為工作忙,很久沒有來了,呵呵。在ms的webmatrix中,對form增加了個新的事件 initactivated,檢測這個 發現只是對form的activated事件的特例處理,即在第一次觸發activated的時候觸發這個事件,其 如下 if this.initactivatedraised ...