MDI窗体容器 - 放窗体的容器

窗体是顶级控件,是不允许放到其他的控件或窗体中的 (李献策lxc)

窗体属性中有一个属性:IsMdiContainer - 确定该窗体是否是MDI容器

在窗体中放一个顶部菜单

点击<销售>按钮会在窗体中弹出一个新的窗体

//销售
private void 销售ToolStripMenuItem_Click(object sender, EventArgs e)
{
Form5 f5 = new Form5();
f5.MdiParent = this;
f5.Show();
}

内部窗体可以在父级窗体里任意移动

问题一:打开新的窗体全屏(李献策lxc)

//销售
private void 销售ToolStripMenuItem_Click(object sender, EventArgs e)
{
Form5 f5 = new Form5();
//窗体最大化
f5.WindowState = FormWindowState.Maximized; f5.MdiParent = this;
f5.Show();
}

问题二:打开后有最小化、最大化等按钮

错误方法一:去掉最大化最小化按钮——失败

//销售
private void 销售ToolStripMenuItem_Click(object sender, EventArgs e)
{
Form5 f5 = new Form5();
//窗体最大化
f5.WindowState = FormWindowState.Maximized; //去掉最大化最小化按钮
f5.MaximizeBox = false;
f5.MinimizeBox = false; f5.MdiParent = this;
f5.Show();
}

错误方法二:去掉边框——失败(李献策lxc)

//销售
private void 销售ToolStripMenuItem_Click(object sender, EventArgs e)
{
Form5 f5 = new Form5();
//窗体最大化
f5.WindowState = FormWindowState.Maximized; //去掉边框
f5.FormBorderStyle = FormBorderStyle.None; f5.MdiParent = this;
f5.Show();
}

正确方法:先用一个panel填充窗体剩余部分,在panel中打开新窗体

//销售
private void 销售ToolStripMenuItem_Click(object sender, EventArgs e)
{
Form5 f5 = new Form5();
//窗体最大化
f5.WindowState = FormWindowState.Maximized; //去掉边框
f5.FormBorderStyle = FormBorderStyle.None; f5.MdiParent = this; //设置新窗体的Parent
f5.Parent = panel1; f5.Show();
}

问题三:在即将打开的新窗体中放入一个button1,Anchor设置为Bottom,Right,当打开新窗体并拖动窗体边框时,按钮并未锁定与底部和右侧的距离

panel是跟随窗体的变化而变化,但是新窗体是不随panel变化而变化的

  

解决方法:设置主窗体的size发生改变时新窗体同时改变size(李献策lxc)

//Size改变时的事件
private void Form3_SizeChanged(object sender, EventArgs e)
{
//遍历panel中的控件,
foreach (var v in panel1.Controls)
{
//如果是新窗体
if (v is Form5)
{
//新窗体先变为正常大小
(v as Form5).WindowState = FormWindowState.Normal;
//新窗体再变为最大化以适应新的Size
(v as Form5).WindowState = FormWindowState.Maximized;
}
}
}

问题四:在点击<仓库>按钮时,会在主窗体中打开一个新的窗体,再点击<销售>按钮会切回销售窗体,但实际是又创建了一个新的销售窗体而已,并非原来打开的窗体

解决办法:唯一窗体(李献策lxc)

==========================================================

权限设置 - 不同的权限登入时显示内容不同

新建一个登入窗体

数据库中添加一个新的权限表

C#-WinForm-MDI窗体容器、权限设置的更多相关文章

  1. Winform MDI窗体容器 权限 简单通讯

    MDI窗体容器 权限  using System; using System.Collections.Generic; using System.ComponentModel; using Syste ...

  2. MDI窗体容器 权限设置

    MDI窗体容器:它可以让其它窗体在它的内部打开,无法超出它的范围将某个窗体的属性:IsMdiContainer设置为true - 窗口样式如何将其它窗体在它的内部打开?窗体对象名.MdiParent ...

  3. Winform MDI窗体容器、权限、简单通讯

    MDI窗体容器: 一般来说,窗体是顶级容器,不允许放在其他任何容器内,但是如果将某个窗体的IsMdiContainer属性设置为True,那此窗体就会成为窗体容器,可以在其中放入其他窗体 在内部的窗体 ...

  4. Winform MDI窗体容器,权限以及简单通讯

    MDI窗体容器: 一般来说,窗体是顶级容器,不允许放在其他任何容器内,但是如果将某个窗体的IsMdiContainer属性设置为True,那此窗体就会成为窗体容器,可以在其中放入其他窗体 在内部的窗体 ...

  5. winform(MDI窗体容器、权限设置)

    一.MDI窗体容器: 1.功能: 它可以让其它窗体在它的内部打开,无法超出它的范围 将某个窗体的属性:IsMdiContainer设置为true - 窗口样式 2.问题: (1)如何将其它窗体在它的内 ...

  6. MDI窗体容器、权限设置

    一.MDI窗体容器: 1.功能: 它可以让其它窗体在它的内部打开,无法超出它的范围 将某个窗体的属性:IsMdiContainer设置为true - 窗口样式 2.问题: (1)如何将其它窗体在它的内 ...

  7. MDI窗体容器和权限设置.avi

    一.MDI窗体容器 MDi窗体是装Form的容器.平常Form(窗体)就是平常展示的最高级别,但是MDI比Form还高级.它可以让其它窗体在它的内部打开,无法超出它的范围 1 创建:将某个窗体的属性: ...

  8. 【2017-05-03】winform打印控件、事件对象和事件数据、MDI窗体容器

    一.打印控件 第一步先把打印对象搞出来. - printDocument    打印对象(将要打印的内容放到该对象里,从该对象里取内容打印) 设置他的PrintPage事件(对于要打印的每一页触发一次 ...

  9. MDI窗体容器--2016年12月15日

    MDI窗体容器 多文档界面(Multiple-Document Interface)简称MDI窗体.MDI窗体用于同时显示多个文档,每个文档显示在各自的窗口中.MDI窗体中通常有包含子菜单的窗口菜单, ...

  10. winform窗体 控件【MDI 窗体容器】

    MDI :窗体容器 -- 在窗体中放置窗体 属性 IsMdiContainer  : 是否是窗体          -- 只有 Form 有此属性    Form2 f2 = new Form2(); ...

随机推荐

  1. 自定义ViewGroup须知

    自定义ViewGroup须知: 1.必须复写onMeasure和onLayout方法,根据容器的特性进行布局设计 2.复写onMeasure方法必须处理父布局设置宽或高为wrap_content情况下 ...

  2. 几个常用的adb命令

    adb全程为Android Debug Bridge,字面意思就是安卓调试桥接.就是android系统提供的一套 工具帮我们建议一个连接android设备的通道,然后在电脑上发送一些指令,完成工作. ...

  3. 如何给不支持新特性的浏览器打补丁(让老版本IE兼容新特性)

    一个非常棒的 JavaScript 框架叫做 Modernizr(http://www.modernizr. com),用于向缺少 HTML5/CSS3特性支持的浏览器打补丁.由 Alexander ...

  4. Failed to create AppDomain 'xxx'. Exception has been Failed to create AppDomain

    一服务器上的数据库全部被置于紧急模式(EMERGENCY),在错误日志里面能看到大量下面的错误 Failed to create AppDomain "YourSQLDba.dbo[runt ...

  5. 为什么忘记commit也会造成select查询的性能问题

    今天遇到一个很有意思的问题,一个开发人员反馈在测试服务器ORACLE数据库执行的一条简单SQL语句非常缓慢,他写的一个SQL没有返回任何数据,但是耗费了几分钟的时间.让我检查分析一下原因,分析解决过后 ...

  6. javascript-代理模式

    JavaScript代理模式笔记 由于一个对象不能直接引用另一个对象,所以要用过代理对象在这两个对象之间起到中介作用 1.代理对象形式是通过script标签 demo实例实现的方式也被人称之为JSON ...

  7. mysql_建立索引的优缺点 #转自Starzm#

    建立索引的优缺点: 为什么要创建索引呢? 这是因为,创建索引可以大大提高系统的性能.         第一.通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性.         第二.可以大大加 ...

  8. 从零自学Hadoop(14):Hive介绍及安装

    阅读目录 序 介绍 安装 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 序 本系列已 ...

  9. 2016 最佳 Linux 发行版排行榜

    2015年,不管在企业市场还是个人消费市场都是 Linux非常重要的一年.作为一个自2005年起就开始使用 Linux的 Linuxer ,我门见证了 Linux在过去十年的成长.2016 Linux ...

  10. Linux cut命令

    [root@wang /]# cat /etc/passwd root:x:::root:/root:/bin/bash bin:x:::bin:/bin:/sbin/nologin daemon:x ...