C#-WinForm-MDI窗体容器、权限设置
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窗体容器、权限设置的更多相关文章
- Winform MDI窗体容器 权限 简单通讯
MDI窗体容器 权限 using System; using System.Collections.Generic; using System.ComponentModel; using Syste ...
- MDI窗体容器 权限设置
MDI窗体容器:它可以让其它窗体在它的内部打开,无法超出它的范围将某个窗体的属性:IsMdiContainer设置为true - 窗口样式如何将其它窗体在它的内部打开?窗体对象名.MdiParent ...
- Winform MDI窗体容器、权限、简单通讯
MDI窗体容器: 一般来说,窗体是顶级容器,不允许放在其他任何容器内,但是如果将某个窗体的IsMdiContainer属性设置为True,那此窗体就会成为窗体容器,可以在其中放入其他窗体 在内部的窗体 ...
- Winform MDI窗体容器,权限以及简单通讯
MDI窗体容器: 一般来说,窗体是顶级容器,不允许放在其他任何容器内,但是如果将某个窗体的IsMdiContainer属性设置为True,那此窗体就会成为窗体容器,可以在其中放入其他窗体 在内部的窗体 ...
- winform(MDI窗体容器、权限设置)
一.MDI窗体容器: 1.功能: 它可以让其它窗体在它的内部打开,无法超出它的范围 将某个窗体的属性:IsMdiContainer设置为true - 窗口样式 2.问题: (1)如何将其它窗体在它的内 ...
- MDI窗体容器、权限设置
一.MDI窗体容器: 1.功能: 它可以让其它窗体在它的内部打开,无法超出它的范围 将某个窗体的属性:IsMdiContainer设置为true - 窗口样式 2.问题: (1)如何将其它窗体在它的内 ...
- MDI窗体容器和权限设置.avi
一.MDI窗体容器 MDi窗体是装Form的容器.平常Form(窗体)就是平常展示的最高级别,但是MDI比Form还高级.它可以让其它窗体在它的内部打开,无法超出它的范围 1 创建:将某个窗体的属性: ...
- 【2017-05-03】winform打印控件、事件对象和事件数据、MDI窗体容器
一.打印控件 第一步先把打印对象搞出来. - printDocument 打印对象(将要打印的内容放到该对象里,从该对象里取内容打印) 设置他的PrintPage事件(对于要打印的每一页触发一次 ...
- MDI窗体容器--2016年12月15日
MDI窗体容器 多文档界面(Multiple-Document Interface)简称MDI窗体.MDI窗体用于同时显示多个文档,每个文档显示在各自的窗口中.MDI窗体中通常有包含子菜单的窗口菜单, ...
- winform窗体 控件【MDI 窗体容器】
MDI :窗体容器 -- 在窗体中放置窗体 属性 IsMdiContainer : 是否是窗体 -- 只有 Form 有此属性 Form2 f2 = new Form2(); ...
随机推荐
- iOS 10 推送的简单使用
首先介绍一下本文涉及到UserNotifications的几个主要类. 其中 [1]UNNotification主要是作为通知delegate方法的参数使用.包含UNNotificationReque ...
- Bitset<>用于unordered container时的默认hash函数
自从c++11起,bitset用于unordered container,将会提供默认的hash函数. 在gcc中,相关代码如下: // DR 1182. /// std::hash speciali ...
- 移动端rem布局实践
一.rem 适配基本概念: 对于移动端的开发,rem 适配必不可少,我们可以用多种方式实现, 根据 html 的 fontSize 属性值为基准,其它所有的 rem 值,根据这个基准计算.我们根据 ...
- Ignite安装配置——中篇
Linux Ignite配置——上篇大体介绍了一下Ignite工具的功能.特性等,以及如何在Linux 上安装配置.从上篇可见Ignite安装非常的简单方便.下面介绍一下Ignite Reposito ...
- 【转】Flex 布局语法教程
网页布局(layout)是CSS的一个重点应用. 布局的传统解决方案,基于盒状模型,依赖 display属性 + position属性 + float属性.它对于那些特殊布局非常不方便,比如,垂直居中 ...
- 【转】用C写一个简单病毒
[摘要]在分析病毒机理的基础上,用C语言写了一个小病毒作为实例,用TURBOC2.0实现. [Abstract] This paper introduce the charateristic of t ...
- 关于IPB帧与恒定比特率、动态比特率的详解
之所以写这篇文章是因为有朋友对IPB帧的设置比较感兴趣,回复中说得比较简单,因此在这里详细的写一下,虽然说一般情况下我们很少去设置这个IPB帧,不过,如果真的学好了,并且清楚的了解了这个IPB帧的概念 ...
- vmstat命令
vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存.进程.CPU活动进行监控.他是对系统的整体情况进行统计,不足之处是无法对某个进程进行深 ...
- android intent 传递list或者对象
(转:http://www.cnblogs.com/lee0oo0/archive/2012/09/24/2699805.html) 方法一: 如果单纯的传递List<String> 或者 ...
- 在AndroidStudio v1.2.0中导入或增加新项目或工程(导入第三方类库或工程)
以下说明基于AndroidStdudio版本v1.2 由于AndroidStudio项目止录与Eclipse中的Worksapce在意义上的改变,所以导入新包或建立新项目时并不和以前那样了. 下面是我 ...