日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

WeifenLuo.WinFormsUI控件使用的一個(gè)例子

 hxdou 2012-08-16
WeifenLuo.WinFormsUI控件使用的一個(gè)例子
 

WeifenLuo.WinFormsUI.DockContent這個(gè)控件不錯(cuò), 可以很方便地實(shí)現(xiàn)如vs 2005里那種窗口定位, 浮動(dòng), dock, tab化等界面效果.
下面是一個(gè)小例子:

××××××××××××××××××××××××××××××××××××××××××××
dockpanel中提供了幾個(gè)可用的類, 重要的有兩個(gè), 一是DockPanel, 一是DockContent,
DockPanel是從panel繼承出來(lái)的, 用于提供可浮動(dòng)的dock的子窗口進(jìn)行浮動(dòng)和dock的場(chǎng)所,
DockContent是從form類中繼承出來(lái)的, 用于提供可浮動(dòng)的窗口基類. 就是說(shuō): DockContent對(duì)象可以在DockPanel對(duì)象中任意貼邊, 浮動(dòng), TAB化等.
建立一個(gè)dockpanel風(fēng)格的程序的過(guò)程是:
1. 建立一個(gè)winform程序, 引用WinFormsUI.dll;
2. 程序主窗口比如說(shuō)是FrmMain; 把FrmMain.IsMdiContainer 設(shè)置為true;
3. 在FrmMain中放一個(gè)DockPanel, 比如說(shuō)名稱是Panel1, 把Panel1.Dock設(shè)為Fill, 或是者是你規(guī)劃的地方.
4. 新建你的子文檔窗口類, 就是新建一個(gè)windows FORM, 在窗口設(shè)計(jì)器里面隨便你添上什么愿意要的控件. 這將是你的程序里的子窗口, 我弄了兩個(gè):
一個(gè)叫FrmChild, 里面放了一個(gè)dock fill的editbox,
另一個(gè)叫FrmProperty, 放了一個(gè)dock fill的PropertyGrid, 名叫propertyGrid1,
并將 editbox,propertyGrid1都設(shè)置為公有成員。
5. 打開(kāi)FrmChild和FrmProperty的代碼, 把class的繼承類由Form改為DockContent;
如:
public class FrmChild : WeifenLuo.WinFormsUI.DockContent // 注意這里改了!
{

}

6. 為FrmMain加上兩個(gè)私有成員:
FrmChild fc;
FrmProperty fp;
這兩個(gè)成員用來(lái)保存待會(huì)兒新建的兩個(gè)窗口的指針.
7. 為FrmMain的Load寫些代碼, 如下:


fc = new FrmChild();
fp = new FrmProperty();
fc.Show(this.dockPanel1);
fp.Show(this.dockPanel1,WeifenLuo.WinFormsUI.DockState.DockLeft);

fp.propertyGrid1.SelectedObject = fc;
fp.propertyGrid1.PropertyValueChanged +=new PropertyValueChangedEventHandler(propertyGrid1_PropertyValueChanged);

fc.MouseDown +=new MouseEventHandler(fc_MouseDown);
fc.MouseUp +=new MouseEventHandler(fc_MouseUp);

就是建立兩個(gè)窗口, 這兩個(gè)窗口都是從DockContent中繼承的, 都有貼邊, tab化, 自動(dòng)hide的能力, 很有意思的.
注意DockContent有新的Show()方法, 可以指定要Show的DockPanel, 當(dāng)然要寫上你準(zhǔn)備的那個(gè)dockPanel1;
兩個(gè)都Show了, 然后為fp的propertyGrid1指定要顯示的對(duì)象, 就是fc;
之后再注冊(cè)事件處理程序, 這幾句是為了可以實(shí)現(xiàn)屬性變了窗口變, 窗口變了屬性變的效果, 可以動(dòng)態(tài)地看到這些對(duì)象的屬性對(duì)于其外觀和形為的影響, 對(duì)于只想建個(gè)多窗口程序的人來(lái)說(shuō), Show完了就可了.
8. 由于上面注冊(cè)的事件, 下面加幾個(gè)事件處理程序:


private void propertyGrid1_PropertyValueChanged(object s, PropertyValueChangedEventArgs e)
{

this.dockPanel1.Invalidate();
this.fc.Invalidate();
//this.fc.Refresh();

}

private void fc_MouseDown(object sender, MouseEventArgs e)
{
this.fp.propertyGrid1.Refresh();
}

private void fc_MouseUp(object sender, MouseEventArgs e)
{
this.fp.propertyGrid1.Refresh();

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多