博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Winform MDI窗体容器、权限、简单通讯
阅读量:6127 次
发布时间:2019-06-21

本文共 3323 字,大约阅读时间需要 11 分钟。

MDI窗体容器:

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

在内部的窗体不管怎么调整,是无法跳出其父级窗体容器的

注:如果想让内部窗体一直最大化并且不要其显示最大化最小化按钮,可将其FormBorderStyle设置为None,Win7系统另外需要将此窗体放入一个Panel容器中

1 private void 销售ToolStripMenuItem_Click(object sender, EventArgs e) 2         { 3             Form2 f2 = new Form2(); 4  5             f2.WindowState = FormWindowState.Maximized; 6  7             f2.FormBorderStyle = FormBorderStyle.None; 8  9             f2.MdiParent = this;10 11             f2.Parent = panel1;12 13             f2.Show();14         }15 16 MDI窗体容器
MDI窗体容器

另:内部窗体打开后是不会跟随外部窗体大小变化而自适应的,此时需要另想办法,比如可以在窗体大小改变事件中让内部窗体重新恢复普通并重新最大化

1 private void Form1_SizeChanged(object sender, EventArgs e) 2         { 3             foreach (var c in panel1.Controls) 4             { 5                 if (c is Form2) 6                 { 7                     (c as Form2).WindowState = FormWindowState.Normal; 8                     (c as Form2).WindowState = FormWindowState.Maximized; 9                 }10             11             }12         }
内部窗体自适应大小

权限:

比如我们做一个管理系统,根据登陆者的身份,显示一部分系统的功能,可以通过在数据库中建立一个权限等级,用数字代表,在获取到登陆者的对象信息之后进行判断,对部分功能进行隐藏

1 public Form1(Users u) 2         { 3             InitializeComponent(); 4  5             if (!u.pre.Contains("1")) 6             { 7                 销售ToolStripMenuItem.Visible = false; 8             } 9 10             if (!u.pre.Contains("2"))11             {12                 仓库ToolStripMenuItem.Visible = false;13             }14 15             if (!u.pre.Contains("3"))16             {17                 财务ToolStripMenuItem.Visible = false;18             }19 20             if (!u.pre.Contains("4"))21             {22                 综合管理ToolStripMenuItem.Visible = false;23             }24         }
权限

 

 

简单通讯:

类似QQ的即时通讯工具中,可以通过获取输入的信息、发送者对象信息、接受者对象信息,将此数据存入数据库,再从接受者一端通过Timer控件不停地获取数据库中消息,有新消息时显示从而实现

不过这种方法需要频繁的查找数据库,如果用户量过大则不宜使用

1 Users F = null; 2         Users T = null; 3  4         public Form3(Users from, Users to) 5         { 6             InitializeComponent(); 7  8             label1.Text = from.UserName; 9             label2.Text = to.UserName;10 11             F = from;12             T = to;13         }14 15         private void button1_Click(object sender, EventArgs e)16         {17             Context c = new Context();18             c.from = label1.Text;19             c.to = label2.Text;20             c.txt = richTextBox2.Text;21             c.state = false;22 23             new ContextData().Insert(c);24 25             richTextBox1.Text += F.NickName + "对" + T.NickName + "说:\r";26             richTextBox1.Text += richTextBox2.Text + "\r\n";27             richTextBox2.Text = "";28         }29         List
cclist = new List
();30 private void timer1_Tick(object sender, EventArgs e)31 {32 cclist = new ContextData().Select(T.UserName, F.UserName);33 34 if (cclist.Count > 0)35 {36 foreach (var c in cclist)37 {38 richTextBox1.Text += c.from + "对" + c.to + "说:\r";39 richTextBox1.Text += c.txt + "\r\n";40 41 new ContextData().Update(c);42 }43 }44 }
简单通讯主要部分

 

转载于:https://www.cnblogs.com/maxin991025-/p/6226363.html

你可能感兴趣的文章
爬虫豆瓣top250项目-开发文档
查看>>
Elasticsearch增删改查
查看>>
oracle归档日志增长过快处理方法
查看>>
有趣的数学书籍
查看>>
teamviewer 卸载干净
查看>>
多线程设计模式
查看>>
解读自定义UICollectionViewLayout--感动了我自己
查看>>
SqlServer作业指定目标服务器
查看>>
UnrealEngine4.5 BluePrint初始化中遇到编译警告的解决办法
查看>>
User implements HttpSessionBindingListener
查看>>
抽象工厂方法
查看>>
ubuntu apt-get 安装 lnmp
查看>>
焊盘 往同一个方向增加 固定的长度方法 总结
查看>>
eclipse的maven、Scala环境搭建
查看>>
架构师之路(一)- 什么是软件架构
查看>>
jquery的冒泡和默认行为
查看>>
USACO 土地购买
查看>>
【原创】远景能源面试--一面
查看>>
B1010.一元多项式求导(25)
查看>>
10、程序员和编译器之间的关系
查看>>