Winform 控制同一窗体只能打开一次的方法!

方法一:

        /// <summary>
        /// 控制只弹出一个子窗体
        /// </summary>
        /// <param name="type">子窗体类型</param>
        public void FilmShow(Type type)
        {
            Form[] f = this.MdiChildren;
            foreach (Form form in f)
            {
                if (form.GetType().Name == type.Name)
                {
                    form.Dock = DockStyle.Fill;
                    form.Activate();
                    return;
                }
            }
            Assembly a = Assembly.GetExecutingAssembly();
            Form ff = (Form)a.CreateInstance(type.FullName);
            ff.MdiParent = this;
            ff.Dock = DockStyle.Fill;
            ff.Show();
        }

 

方法二:

        public bool checkchildFrmExist(string childFrmName)
        {
            foreach (Form childFrm in this.MdiChildren)
            {
                if (childFrm.Text.ToString() == childFrmName)
                {
                    if (childFrm.WindowState == FormWindowState.Minimized)
                    {
                        childFrm.WindowState = FormWindowState.Normal;
                    }
                    childFrm.Activate();
                    return true;
                }
            }
            return false;
        }

 

模式窗体的控制:

 

        /// <summary>
        /// 该窗体以模式窗体形式弹出
        /// </summary>
        /// <param name="type"></param>
        public void FilmShowDialog(Type type)
        {
            Form[] f = this.MdiChildren;
            foreach (Form form in f)
            {
                if (form.GetType().Name == type.Name)
                {
                    form.Activate();
                    return;
                }
            }
            Assembly a = Assembly.GetExecutingAssembly();
            Form ff = (Form)a.CreateInstance(type.FullName);
            ff.ShowDialog();
        }

 

在C# Winform中,如果想要所有MDI(Multiple Document Interface,多文档界面)窗体始终从同一位置开始,你可以通过设置窗体的启动位置来实现。这里有一个基本的步骤: 1. **设置主窗体**: 创建或打开MDI容器(通常是Form类的实例,它会包含多个窗体)。在设计模式下,可以在工具箱中选择Form控件。 2. **初始化窗体**: 当你创建一个新的窗体(Form类的实例)时,可以为其指定初始的位置。例如,在窗体的构造函数中,你可以这样做: ```csharp public FormChild() { // 设定窗体的默认位置相对于主窗体 Location = new Point(parentForm.Left + desiredXOffset, parentForm.Top + desiredYOffset); } ``` 在这里,`parentForm`是你当前的主窗体实例,`desiredXOffset` 和 `desiredYOffset` 是你想让窗体偏离主窗体边缘的距离。 3. **动态添加窗体**: 当通过代码动态添加窗体时,同样使用相同的初始化位置: ```csharp FormChild subForm = new FormChild(); subForm.ShowInParent(parentForm); ``` `ShowInParent()` 方法可以让你控制窗体如何在主窗体上显示,比如是否在最上面,或者在某个特定位置。 **相关问题--** 1. 如何保存窗体的位置以便下次打开时自动恢复? 2. 是否有更简单的属性可以直接设置窗体始终从同一位置开启? 3. 如果我想限制窗体只能在主窗体的某个区域内打开,怎么做?
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值