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(); ...
随机推荐
- 基于物理渲染的渲染器Tiberius计划
既然决定实现一个光栅化软件渲染器,我又萌生了一个念头:实现一个基于物理渲染的渲染器.
- Orchard中如何配置远端发布
Orchard中默认安装是有Blog功能的.下面介绍如何配置Remote Blog Publishing功能,使用Windows Live Writer客户端发布博客. 一,开启Remote Blog ...
- Html--表单练习
<!--文档定义一定要带上,因为浏览器在解析的时候先按照文档定义的格式解析, 如果没有就按照浏览器默认的格式解析,可能会出问题.--> <html> & ...
- mysqldump: Error: Binlogging on server not active
在学习使用mysqldump时,使用mysqldump备份时,遇到了下面两个错误: [root@DB-Server backup]# ./mysql_dump_back.sh Warning: Usi ...
- INITIAL参数设置导致TRUNCATE TABLE不能降低高水位线案例
在一个数据库使用下面SQL找出了一批需要降低高水位线的表,其中有几个表没有数据,于是我打算用TRUNCATE来降低高水位线HWM SELECT a.owner, a.segment_na ...
- TCP Provider The semaphore timeout period has expired
我们一数据库服务器上有个作业最近几天偶尔会遇到下面错误(敏感信息已做处理),主要是报"TCP Provider: The semaphore timeout period has expir ...
- Ant :Property
Property Ant 内置的Property 系统属性 Ant附加的属性 自定义Property Ant :Property properties是由key-value组成的集合,就是Java中 ...
- SQLite学习笔记(七)&&事务处理
说到事务一定会提到ACID,所谓事务的原子性,一致性,隔离性和持久性.对于一个数据库而言,通常通过并发控制和故障恢复手段来保证事务在正常和异常情况下的ACID特性.sqlite也不例外,虽然简单,依然 ...
- 【转】Flex 布局语法教程
网页布局(layout)是CSS的一个重点应用. 布局的传统解决方案,基于盒状模型,依赖 display属性 + position属性 + float属性.它对于那些特殊布局非常不方便,比如,垂直居中 ...
- Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理5
我们先直接拷贝下blank.html这个页面的代码,顺带先建立一个Home控制器,并添加Index视图.将代码拷贝进去. <!DOCTYPE html> <html lang=&qu ...