在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#