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

问题描述

我用一下代码将窗体最小化到状态栏,但是我现在每点一次打开窗口的菜单,程序就又重新打开一次原先的窗体,我想实现当第二次打开窗体时只要激活第一次打开的窗体,应该如何实现?//先建一个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);}}}

解决方案

解决方案二:
foreach(FormFmOpeninFormParent.MdiChildren){if(FmOpen.Name==childForm.Name){FmOpen.Activate();FmOpen.WindowState=FormWindowState.Maximized;return;}}
解决方案三:
不行的,我的窗体已最小化到状态栏了,

时间: 2024-10-22 13:06:43

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

VB.NET实现窗体图标最小化到状态栏

本文所使用的编程环境是Microsoft Visual Studio 2005,首先打开Visual Studio.在文件(File)菜单上,单击新建项目(New Project).在新建项目(New Project)对话框的模板(Templates)窗格中,单击Windows应用程序(WindowsApplication).单击确定(ok). 想要将窗体图标最小化时自动隐藏到任务栏,我们可以使用一个控件,这个控件的名字叫做NotifyIcon控件,打开左侧的工具箱找到NotifyIcon控件直

有关winform,将一个窗体最小化后再显示会重新绘画窗体吗?

问题描述 有关winform,将一个窗体最小化后再显示会重新绘画窗体吗? 小白,刚接触这方面.在用一个窗体时遇到的问题. 我在这个窗体上画了几个形状,当我把窗体最小化后,再度点开,窗体就会重新初始化重新绘制,之前画的几个形状就没有了.这是winform的特性吗?又没有什么办法让窗体最小化后之前画的图依旧存在? 解决方案 参考这个帖子:http://bbs.csdn.net/topics/80143504 解决方案二: 吧绘画函数放到 override OnPaint 函数里,这样每次窗口需要重画

C#实现系统托盘及窗体最小化时隐藏为任务栏图标的Window appllication

1.设置窗体属性showintask=false 2.加notifyicon控件notifyicon1,为控件notifyicon1的属性icon添加一个icon图标. 3.添加窗体最小化事件(首先需要添加事件引用): //this.sizechanged+=newsystem.eventhandler(this.form1_sizechanged); //上面一行是主窗体initializecomponent()方法中需要添加的引用 privatevoidform1_sizechanged(o

添加用户自定义控件后,窗体最小化就出现错误

问题描述 问题如下:添加了一个从codeproject下载过来的dll,具体功能是将RichTextBox可以将BackColor设置为Transparent.然后从工具箱拖动到winForm界面上,调试运行没问题,最大化没问题,窗口拖动也没问题.但是窗体最小化的时候就出现以下提示:"System.ArgumentException"类型的未经处理的异常出现在System.Drawing.dll中.其他信息:参数无效.删去这个dll里面的控件后,就可以最小化了.请问是什么问题造成的??

在C#中,如何设置系统托盘,按窗体最小化按钮时缩小到任务栏(托盘图标保留),按关闭按钮时缩小到托盘?

问题描述 在窗体的from_Closing事件中调用this.ShowInTaskbar=false;notifyIcon1.Visible=true;这两句代码也没用,重写onClosing方法也不行,但求甚解!Thankyouforthat! 解决方案 解决方案二:privatevoidForm1_SizeChanged(objectsender,EventArgse){if(this.WindowState==FormWindowState.Minimized)//最小化{this.Hid

myeclipse窗口不能最小化到状态栏

问题描述 如图:package和console点了最小化只是缩到一边去,没有完全的最小化,左边还留下不少空的位置,请问一下,这个要怎么弄,以前是点了最小化后就剩下一个图标,整个都看不到的,不会看到左边有空的位置 解决方案 解决方案二:窗口有个新的窗口键的解决方案三:引用1楼ddyuwgr123的回复: 窗口有个新的窗口键的 什么意思?能不能具体点

C#怎样才能实现窗体最小化到托盘呢?_C#教程

private void Form1_Resize(object sender, System.EventArgs e) {     if (this.WindowState == FormWindowState.Minimized) {         this.Visible = false;         this.notifyIcon1.Visible = true;     } } private void notifyIcon1_Click(object sender, Syste

最小化-使用 SetParent(子窗体.Handle, 父窗体.Handle)显示子窗体问题?

问题描述 使用 SetParent(子窗体.Handle, 父窗体.Handle)显示子窗体问题? 我使用SetParent(子窗体.Handle, 父窗体.Handle)显示子窗体时,子窗体最小化后不见了: 单击MDI主窗体上窗口菜单中的子窗体标题,这时子窗体在状态栏上显示了,但无法最大化 显示? 解决方案 一般用不着api form.show(父窗口) 这样显示的对话框就是拥有父窗体的. 设置showintaskbar=true可以显示在任务栏

[WPF]如何在关闭非模态子窗体时用消息框确认:解决最小化窗体时抛出的异常

又是一个看起来很简单的问题.像下面这样在Closing里弹出个MessageBox确认一下不就行了? public static void OnWindowClosing(object sender, CancelEventArgs e) { if (MessageBox.Show(string.Format("Are you sure to close the {0}?", (sender as Window).Title), "Confirm", Message