我是在系统自带的库里是没找到dockpanel这个哦。。
$rm=mysql_query("SELECT * FROM `pql_spices` ORDER by rand()")$i = '1'
$td=[]
while ($rmx=mysql_fetch_array($rm))
{
$Total+=$rmx['Price']
$Total_standard+=$rmx['standard']
$td[]=$row
$end=end(array($td))
这个控件不错,可以很方便地实现如vs
里那种窗口定位,
浮动,
dock,
tab化等界面效果,
今天有空下载来看了一下,
用起来还是很容易的,
大概讲一下,
省得以后忘记了.
dockpanel中提供了几个可用的类,
重要的有两个,
一是DockPanel,
一是DockContent,
DockPanel是从panel继承出来的,
用于提供可浮动的dock的子窗口进行浮动和dock的场所,
DockContent是从form类中继承出来的,
用于提供可浮动的窗口基类.
就是说:
DockContent对象可以在DockPanel对象中任意贴边,
浮动,
TAB化等.
建立一个docpanel风格的程序的过程是:
1.
建立一个winform程序,
引用WinFormsUI.dll
2.
程序主窗口比如说是FrmMain
把FrmMain.IsMdiContainer
设置为true
3.
在FrmMain中放一个DockPanel,
比如说名称是Panel1,
把Panel1.Dock设为Fill,
或是者是你规划的地方.
4.
新建你的子文档窗口类,
就是新建一个windows
FORM,
在窗口设计器里面随便你添上什么愿意要的控件.
这将是你的程序里的子窗口,
我弄了两个:
一个叫FrmChild,
里面放了一个dock
fill的editbox,
另一个叫FrmProperty,
放了一个dock
fill的PropertyGrid,
名叫propertyGrid1,
设这两个是有用的.
后面说.
5.
打开FrmChild和FrmProperty的代码,
把class的继承类由Form改为DockContent
如:
public
class
FrmChild
:
WeifenLuo.WinFormsUI.DockContent
//
注意这里改了!
{
.........
}
6.
为FrmMain加上两个私有成员:
FrmChild
fc
FrmProperty
fp
这两个成员用来保存待会儿新建的两个窗口的指针.
7.
为FrmMain的Load写些代码,
如下:
fc
=
new
FrmChild()
fp
=
new
FrmProperty()
fc.Show(this.dockPanel1)
fp.Show(this.dockPanel1)
fp.propertyGrid1.SelectedObject
=
fc
fp.propertyGrid1.PropertyValueChanged
+=new
PropertyValueChangedEventHandler(propertyGrid1_PropertyValueChanged)
fc.MouseDown
+=new
MouseEventHandler(fc_MouseDown)
fc.MouseUp
+=new
MouseEventHandler(fc_MouseUp)
就是建立两个窗口,
这两个窗口都是从DockContent中继承的,
都有贴边,
tab化,
自动hide的能力,
很有意思的.
注意DockContent有新的Show()方法,
可以指定要Show的DockPanel,
当然要写上你准备的那个dockPanel1
两个都Show了,
然后为fp的propertyGrid1指定要显示的对象,
就是fc
之后再注册事件处理程序,
这几句是为了可以实现属性变了窗口变,
窗口变了属性变的效果,
可以动态地看到这些对象的属性对于其外观和形为的影响,
对于只想建个多窗口程序的人来说,
Show完了就可了.
8.
由于上面注册的事件,
下面加几个事件处理程序:
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()
}
运行吧,
看看效果?
你把这两个窗口放到边上,
这里哪里都试试,
挺有意思的.
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)