Winform MDI窗体容器、权限、简单通讯
MDI窗体容器:
一般来说,窗体是顶级容器,不允许放在其他任何容器内,但是如果将某个窗体的IsMdiContainer属性设置为True,那此窗体就会成为窗体容器,可以在其中放入其他窗体
在内部的窗体不管怎么调整,是无法跳出其父级窗体容器的
注:如果想让内部窗体一直最大化并且不要其显示最大化最小化按钮,可将其FormBorderStyle设置为None,Win7系统另外需要将此窗体放入一个Panel容器中
private void 销售ToolStripMenuItem_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2(); f2.WindowState = FormWindowState.Maximized; f2.FormBorderStyle = FormBorderStyle.None; f2.MdiParent = this; f2.Parent = panel1; f2.Show();
}
MDI窗体容器
另:内部窗体打开后是不会跟随外部窗体大小变化而自适应的,此时需要另想办法,比如可以在窗体大小改变事件中让内部窗体重新恢复普通并重新最大化
private void Form1_SizeChanged(object sender, EventArgs e)
{
foreach (var c in panel1.Controls)
{
if (c is Form2)
{
(c as Form2).WindowState = FormWindowState.Normal;
(c as Form2).WindowState = FormWindowState.Maximized;
} }
}
内部窗体自适应大小
权限:
比如我们做一个管理系统,根据登陆者的身份,显示一部分系统的功能,可以通过在数据库中建立一个权限等级,用数字代表,在获取到登陆者的对象信息之后进行判断,对部分功能进行隐藏
public Form1(Users u)
{
InitializeComponent(); if (!u.pre.Contains(""))
{
销售ToolStripMenuItem.Visible = false;
} if (!u.pre.Contains(""))
{
仓库ToolStripMenuItem.Visible = false;
} if (!u.pre.Contains(""))
{
财务ToolStripMenuItem.Visible = false;
} if (!u.pre.Contains(""))
{
综合管理ToolStripMenuItem.Visible = false;
}
}
权限
简单通讯:
类似QQ的即时通讯工具中,可以通过获取输入的信息、发送者对象信息、接受者对象信息,将此数据存入数据库,再从接受者一端通过Timer控件不停地获取数据库中消息,有新消息时显示从而实现
不过这种方法需要频繁的查找数据库,如果用户量过大则不宜使用
Users F = null;
Users T = null; public Form3(Users from, Users to)
{
InitializeComponent(); label1.Text = from.UserName;
label2.Text = to.UserName; F = from;
T = to;
} private void button1_Click(object sender, EventArgs e)
{
Context c = new Context();
c.from = label1.Text;
c.to = label2.Text;
c.txt = richTextBox2.Text;
c.state = false; new ContextData().Insert(c); richTextBox1.Text += F.NickName + "对" + T.NickName + "说:\r";
richTextBox1.Text += richTextBox2.Text + "\r\n";
richTextBox2.Text = "";
}
List<Context> cclist = new List<Context>();
private void timer1_Tick(object sender, EventArgs e)
{
cclist = new ContextData().Select(T.UserName, F.UserName); if (cclist.Count > )
{
foreach (var c in cclist)
{
richTextBox1.Text += c.from + "对" + c.to + "说:\r";
richTextBox1.Text += c.txt + "\r\n"; new ContextData().Update(c);
}
}
}
简单通讯主要部分
Winform MDI窗体容器、权限、简单通讯的更多相关文章
- Winform MDI窗体容器 权限 简单通讯
MDI窗体容器 权限 using System; using System.Collections.Generic; using System.ComponentModel; using Syste ...
- Winform MDI窗体容器,权限以及简单通讯
MDI窗体容器: 一般来说,窗体是顶级容器,不允许放在其他任何容器内,但是如果将某个窗体的IsMdiContainer属性设置为True,那此窗体就会成为窗体容器,可以在其中放入其他窗体 在内部的窗体 ...
- MDI窗体容器 权限设置
MDI窗体容器:它可以让其它窗体在它的内部打开,无法超出它的范围将某个窗体的属性:IsMdiContainer设置为true - 窗口样式如何将其它窗体在它的内部打开?窗体对象名.MdiParent ...
- 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(); ...
随机推荐
- leetcode算法分类
利用堆栈:http://oj.leetcode.com/problems/evaluate-reverse-polish-notation/http://oj.leetcode.com/problem ...
- 函数式 js 接口实现原理,以及 lodash/fp 模块
函数式 js 接口 之前在 youtube 上看到一个技术视频,讲“underscore.js的接口为什么不好用”,以及什么样的接口更好用.演讲者是 lodash.js 的作者,他提出了一种“全面函数 ...
- 【转】ORACLE的REDO与UNDO
一.什么是redo?redo:oracle在在线或者归档重做日志文件中的记录的信息,外以出现失败时可以利用这些数据来"重放"事务.每个oracle数据都至少有二个在线重做日志组,每 ...
- ubuntu 系统下搭建Java的环境
1.首先可以使用 java -version来查看自己是否已经搭建了java的环境,如果出现了java的版本号则表示java的环境已经搭建好了!否则则继续下面的步骤进行java环境的搭建 2.进入Or ...
- SecureCRT中设置 \n 为回车换行,和 \r\n 的行为一致
勾上途中红框的选项即可
- css负边距之详解
自从1998年CSS2作为推荐以来,表格的使用渐渐退去,成为历史.正因为此,从那以后CSS布局成为了优雅代码的代名词. 对于所有设计师使用过的CSS概念,负边距作为最少讨论到的定位方式要记上一功.这就 ...
- SAP模板
用的是kuangbin的模板:http://www.cnblogs.com/kuangbin/archive/2012/09/29/2707955.html ;//点数的最大值 ;//边数的最大值 c ...
- php模拟http请求的方法
我在这里终结了三种方法 第一种方法:fsockopen $flag = 0; $post = ''; $errno = ''; $errstr = ''; //要post的数据 $argv = arr ...
- linQ学习笔记之三高级语句
linq语句查询执行的时机 第一步获取数据源 int [] obejct = new int[]{1,2,3,4,5,6,7,8,9} 第二步定义查询 var even = numbers.where ...
- python supervisor使用
Supervisor 是基于 Python 的进程管理工具,只能运行在 Unix-Like 的系统上,也就是无法运行在 Windows 上.Supervisor 官方版目前只能运行在 Python 2 ...