MDI窗体的优化---上
来源:互联网 发布:linux删除进程命令 编辑:程序博客网 时间:2024/06/06 00:46
对于刚刚接手的 机房收费系统。
该系统,最外层是一个MDI窗体。对于其他的操作,都在MDi子窗体里面进行。
当看到这种窗体的时候,我们毫不犹豫的就说,这个窗体的主窗体是一个MDI窗体。其他的都是他的子窗体。
所以我们在做系统的时候,创建一个MDI窗体。但是我们会发现,在MDI窗体上不能添加 按钮等其他控件。所以我们需要一个容器控件。大部分人都会想到的时pictureBox因为这是一个非常简单,有代表的容器控件。
刚做完主窗体的时候,没有什么错。但是当你有MDI子窗体form1的时候,你会发现,问题来了。不管你怎么调整,子窗体form1都看不到。
下面举一个小例子,可以解决以上问题。
这是一个MDI窗体,上面的是一个pictureBox控件,当点击按钮的时候,弹出form1子窗体。
当点击按钮的时候,你会看到下面这种情况。
子窗体form1和picture在同一个层级。所以看不到子窗体。
下面给出一种解决办法:
使用API函数----,将form1设置成为pictureBox的子窗体。这样,form1就可以显示在pictureBox前面了。
Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As LongPrivate Sub Command1_Click() SetParent Form1.hWnd, MDIForm1.hWnd Form1.ShowEnd Sub
使用api函数,就可以把子窗体form1放置在pictureBox之上显示出来了。
Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As LongPrivate Sub Command1_Click() SetParent Form1.hWnd, MDIForm1.hWnd Form1.Show Form1.Width = Picture1.ScaleWidth Form1.Height = Picture1.ScaleHeightEnd Sub
虽然问题解决了,但是视图的美观却被打破了。
MDI子窗体最大化后的标题栏在MDI窗体的菜单栏下方。而且,MDI子窗体最小化后,就找不到了。
为了实现更友好的主界面,我们在下一期讲解。
- MDI窗体的优化---上
- MDI窗体的优化---下
- 在MDI窗体调用子窗体时怎样使不被MDI窗体上的图片挡住
- 子窗体显示在MDI窗体上
- 在MDI窗体中将最小化的子窗体放在主窗体的状态栏上
- MDI的子窗体问题
- MDI窗体 的再度思考
- MDI窗体的概念、作用
- 浅谈MDI窗体的多窗体编程
- MDI窗体维护已打开的窗体
- MDI窗体
- 机房重构(二)--MDI窗体问题+优化的单例模式
- [VB.NET]怎样实现MDI窗体菜单上的“窗口”菜单下面的功能
- MDI父窗体添加背景、背景上显示自动换行文本并解决闪烁的问题
- c#判断打开的窗体:MDI和非MDI
- 锁定MDI子窗体的位置
- 去除MDI窗体的滚动条
- mdi多层子窗体的实现
- SQL语句查出某个用户下所有表, 以及表对应的同义词,主键,索引。
- C++虚函数的原理及实现
- MSDN: WDM与KMDF的区别
- ^ shell
- 130821创建索引
- MDI窗体的优化---上
- POj 3601 Tower of Hanoi 汉诺塔(贪心)
- oracle 锁粒度
- Hoj 1917 Peaceful Commission
- HTML5_Canvas_属性、定义及方法
- ETL错误
- C++书籍
- 编程原则
- struts2常见错误总结