当前位置:编程学习 > C#/ASP.NET >>

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

在MDI窗体中,如何把最小化的子窗体放在主窗体的状态栏上 --------------------编程问答-------------------- 下面的代码只是实现你上面说的要求。如果要求点击状态栏上的按钮,再把窗体show出来,还需要在下面代码的基础上再扩展。
主要的思路就是,在父窗体能处理子窗体的最小化事件。

//先建一个FormBase的基类,子窗体都从这个基类继承
    public class FormBase : System.Windows.Forms.Form
    {
        public delegate void FormMinSize(object sender, EventArgs e); 
        public event FormMinSize OnFormMinSize; 

        public FormBase()
        {
        }

        //重载,用来处理自己定义的事件
        protected override void OnSizeChanged(EventArgs e)
        {
            base.OnSizeChanged(e);

            if (this.OnFormMinSize != null)
            {
                this.OnFormMinSize(this, e);
            }
        }

    }

//下面是父窗体的类
public partial class FormParent : Form
    {
        public FormParent()
        {
            InitializeComponent();
        }

        //这里是show子窗体的按钮,用来测试,Form3是从FormBase继承的
        private void form3ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Form3 form = new Form3();
            form.MdiParent = this;

            //添加事件
            form.OnFormMinSize += new FormBase.FormMinSize(form_OnFormMinSize);
            form.Show();
        }

        //这里是主要的处理部分
        private void form_OnFormMinSize(object sender, EventArgs e)
        {
            //获取子窗体
            Form childForm = (Form)sender;

            //最小化的时候,状态栏添加一个控件
            //加上childForm.Visible == true条件为了防止被添加两次,具体原因测试一下就知道了
            if (childForm.WindowState == FormWindowState.Minimized && childForm.Visible == true)
            {
                childForm.Hide();

                //状态栏添加一个控件
                ToolStripStatusLabel label = new ToolStripStatusLabel();
                label.Text = childForm.Text;
                label.BorderSides = ToolStripStatusLabelBorderSides.All;
                label.BorderStyle = Border3DStyle.RaisedInner;

                this.statusStrip1.Items.Add(label);
            }
        }
    } --------------------编程问答-------------------- 谢谢
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,