在MDI窗体中,如何把最小化的子窗体放在主窗体的状态栏上

问题描述

在MDI窗体中,如何把最小化的子窗体放在主窗体的状态栏上

解决方案

解决方案二:
下面的代码只是实现你上面说的要求。如果要求点击状态栏上的按钮,再把窗体show出来,还需要在下面代码的基础上再扩展。主要的思路就是,在父窗体能处理子窗体的最小化事件。//先建一个FormBase的基类,子窗体都从这个基类继承publicclassFormBase:System.Windows.Forms.Form{publicdelegatevoidFormMinSize(objectsender,EventArgse);publiceventFormMinSizeOnFormMinSize;publicFormBase(){}//重载,用来处理自己定义的事件protectedoverridevoidOnSizeChanged(EventArgse){base.OnSizeChanged(e);if(this.OnFormMinSize!=null){this.OnFormMinSize(this,e);}}}//下面是父窗体的类publicpartialclassFormParent:Form{publicFormParent(){InitializeComponent();}//这里是show子窗体的按钮,用来测试,Form3是从FormBase继承的privatevoidform3ToolStripMenuItem_Click(objectsender,EventArgse){Form3form=newForm3();form.MdiParent=this;//添加事件form.OnFormMinSize+=newFormBase.FormMinSize(form_OnFormMinSize);form.Show();}//这里是主要的处理部分privatevoidform_OnFormMinSize(objectsender,EventArgse){//获取子窗体FormchildForm=(Form)sender;//最小化的时候,状态栏添加一个控件//加上childForm.Visible==true条件为了防止被添加两次,具体原因测试一下就知道了if(childForm.WindowState==FormWindowState.Minimized&&childForm.Visible==true){childForm.Hide();//状态栏添加一个控件ToolStripStatusLabellabel=newToolStripStatusLabel();label.Text=childForm.Text;label.BorderSides=ToolStripStatusLabelBorderSides.All;label.BorderStyle=Border3DStyle.RaisedInner;this.statusStrip1.Items.Add(label);}}}
解决方案三:
谢谢

时间: 2024-12-21 06:40:24

在MDI窗体中,如何把最小化的子窗体放在主窗体的状态栏上的相关文章

失去焦点 最小化-请问:窗体失去焦点时最小化的问题

问题描述 请问:窗体失去焦点时最小化的问题 想实现主窗体失去焦点时最小化的功能,但是要排除下面的两种情况: (1)有其他子窗体打开而使主窗体失去焦点的: (2)有MessageBox窗体弹出而使主窗体失去焦点的: 第(1)条实现了,但第(2)条无法排除,请教高手指点. 我的代码是这样的: private void Form1_Deactivate(object sender, EventArgs e) { //只打开了一个窗体,才最小化:如果还有其他窗体打开了就不最小化 if (Applicat

界面设计-为什么最小化后Panel就超出主界面范围

问题描述 为什么最小化后Panel就超出主界面范围 Panel public class GameJPanel extends JPanel { private static final long serialVersionUID = 1L; private Image image; Random rand = new Random(); public ArrayList<Fish> fishes=new ArrayList<Fish>(); public GameJPanel()

mfc窗体-大家帮看下,为什么MFC里边的主窗体总是调用不了?

问题描述 大家帮看下,为什么MFC里边的主窗体总是调用不了? 大家帮看下,为什么MFC里边的主窗体总是调用不了?用新建的子窗体调用主窗体总是失败! 解决方案 关键看你的代码怎么写的,你想怎么调用,调用什么.

C#主窗体获取用户控件返回值并赋值给主窗体失败

问题描述 我想把用户控件的值返回赋值给主窗体的RecordList,一直没有成功,请大师指教!//主窗体privateList<string>_recordlist;publicList<string>RecordList=newList<string>();///<summary>///已选择的RecordIDList///</summary>publicList<string>RecordList{get{_recordlist=

VC中使程序最小化到系统托盘区

//定义托盘图标结构体 NOTIFYICONDATA nid; #define WM_ICONNOTIFY WM_USER + 909 //图标响应消息(lParam) #define ID_TASKBARICON 100 //参数(wParam) //初始化系统托盘图标 void OnBtnMinimize() { //初始化系统托盘图标 nid.cbSize = sizeof(NOTIFYICONDATA); nid.hWnd = m_hWnd;; nid.uID = ID_TASKBARI

c#刷新主窗体

问题描述 在子窗体中正删改个数据库的数据,返回主窗体后如何实现自动更新主窗体的combobox中的数据?(combobox的数据从数据库中查找而来) 解决方案 解决方案二:重新读数据库,重新加载,over解决方案三:更新一下数据源解决方案四:重新加载一次combobox的数据源就行了解决方案五:从数据库重新加载,或者直接更新现有combobox,也就是同步完成更新解决方案六:把主窗口传到子窗口中,直接使用主窗口的方法刷新

vb.net实现在mdi主窗体的panel中添加子窗体,能够实现添加,求解决最大最小化问题

问题描述 直接上图一目了然这是我想要实现的内容,现在基本能够满足要求,但是在主窗体normal状态下,将子窗体最小化:是如下所示的样子然后在将出窗体最大化后,就变成这样了或在主窗体Maximized状态下,将子窗体最小化.是如下所示的样子在将主窗体还原后,就看不见子窗体的最小化的图标了我想要子窗子不论是最大最小化,都不受主窗体最大最小化的影响,都能在这个panel区域中可见.可能我的这个方法实现这个功能是错误的,各位大神有什么好方法还请教一下 解决方案 解决方案二:求各位给菜鸟点帮助,实现最小化

将窗体最小化到状态栏,每次点击打开窗的菜单窗体都会重新打开,我想实现当第二次打开窗体时只要激活第一次打开的窗体

问题描述 我用一下代码将窗体最小化到状态栏,但是我现在每点一次打开窗口的菜单,程序就又重新打开一次原先的窗体,我想实现当第二次打开窗体时只要激活第一次打开的窗体,应该如何实现?//先建一个FormBase的基类,子窗体都从这个基类继承publicclassFormBase:System.Windows.Forms.Form{publicdelegatevoidFormMinSize(objectsender,EventArgse);publiceventFormMinSizeOnFormMinS

急~~在子窗体中打开另个子窗体并关闭本窗体`为什么只关闭本窗体而无法打开

问题描述 DimfrmAsNewMDImainDimfrm2AsNewform2frm2.MdiParent=frmfrm2.Show()Me.Hide()我那里错了?? 解决方案 解决方案二:'DimfrmAsNewMDImain去掉!Dimfrm2AsNewform2frm2.MdiParent=me.MdiParentfrm2.Show()Me.Hide()'或直接Close掉解决方案三:当你使用NewMDImain的时候,只是把frm2加到了一个未显示出来的刚建立的MdiMain中了,而