這幾個(gè)月比較忙,也沒(méi)有想到寫(xiě)些什么,所以停筆了一個(gè)多月。本想寫(xiě)個(gè)Code生成技術(shù)呢,到Codesmith和T4就不知道該寫(xiě)些什么示例,比較實(shí)用也大家比較感興趣的,所以暫時(shí)停下,如果關(guān)于Code生成技術(shù)你有什么好的想法,可以給我寫(xiě)建議。
還是趕快進(jìn)入正題,我以前寫(xiě)過(guò)一個(gè) Sql查詢(xún)生成模塊 。當(dāng)時(shí)用的MDI窗體,始終感覺(jué)有些不如意,所以想重構(gòu)下,特別有些sql性能和生成規(guī)則。所以就開(kāi)發(fā)了今天要講的控件,我把它稱(chēng)為T(mén)ableView控件,名字和實(shí)際聯(lián)系不大,主要是剛開(kāi)始時(shí)候沒(méi)有考慮這么多,就是為了Sql查詢(xún)重構(gòu)而寫(xiě)的,后來(lái)感覺(jué)在以后的代碼生成工具設(shè)計(jì),Ui界面設(shè)計(jì)也會(huì)很有用,所以就把它獨(dú)立了出來(lái)做成控件(我覺(jué)得代碼生成工具最好還是像Linq一樣提供DBML設(shè)計(jì)界面)。先看運(yùn)行結(jié)果:
設(shè)計(jì)時(shí):
![]()
運(yùn)行時(shí):
這是一個(gè)帶有標(biāo)題、圖標(biāo)、關(guān)閉按鈕、可拖動(dòng)的內(nèi)容控件,其實(shí)相當(dāng)于一個(gè)panel。我打算用它來(lái)取代以前的MDi窗體,F(xiàn)在唯一缺憾是在設(shè)計(jì)時(shí)還不能想Panel一樣直接拖動(dòng)加入子控件,還是必須寫(xiě)代碼,在后臺(tái)代碼添加
this.tableViewControl1.ContentControls.Add(new ListBox() { Dock = DockStyle.Fill });
checkedListBox1.Dock = DockStyle.Fill;
this.tableViewControl3.ContentControls.Add(checkedListBox1);
這個(gè)設(shè)計(jì)時(shí),我正在設(shè)法解決。panel的設(shè)計(jì)時(shí)PanelControlDesigner繼承至ParentControlDesignr,到市里面的代碼很多,所以暫時(shí)想找一個(gè)更好的方式來(lái)實(shí)現(xiàn),如果你有好的建議,希望賜教。感覺(jué)這個(gè)設(shè)計(jì)時(shí),有失大雅了,呵呵。在這個(gè)控件中設(shè)計(jì)為用戶(hù)控件,在控件添加了多個(gè)Panel:標(biāo)題欄,內(nèi)容框,右邊框和下邊框(為了可拖動(dòng)改變Size)。
控件下載:TableViewControl