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("1"))
            {
                销售ToolStripMenuItem.Visible = false;
            }

            if (!u.pre.Contains("2"))
            {
                仓库ToolStripMenuItem.Visible = false;
            }

            if (!u.pre.Contains("3"))
            {
                财务ToolStripMenuItem.Visible = false;
            }

            if (!u.pre.Contains("4"))
            {
                综合管理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 > 0)
            {
                foreach (var c in cclist)
                {
                    richTextBox1.Text += c.from + "对" + c.to + "说:\r";
                    richTextBox1.Text += c.txt + "\r\n";

                    new ContextData().Update(c);
                }
            }
        }

简单通讯主要部分

时间: 2024-12-14 16:12:26

Winform MDI窗体容器、权限、简单通讯的相关文章

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

MDI窗体容器 权限  using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using WindowsFormsApplication1.App_Code; namespace Win

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

一.MDI窗体容器: 1.功能: 它可以让其它窗体在它的内部打开,无法超出它的范围 将某个窗体的属性:IsMdiContainer设置为true - 窗口样式 2.问题: (1)如何将其它窗体在它的内部打开? 窗体对象名.MdiParent = this; (2)窗体打开时最大化属性不好用,怎么办? 在实例化窗体对象,show之前,用代码设置最大化属性 注意:窗体的WindowState属性必须为默认值Normal (3)内部窗体最大时右上角总是显示最大最小关闭按钮,如何去掉? 在MDI窗体里放

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

一.打印控件 第一步先把打印对象搞出来. - printDocument    打印对象(将要打印的内容放到该对象里,从该对象里取内容打印) 设置他的PrintPage事件(对于要打印的每一页触发一次) - pageSetupDialog 打印设置对话框 - printPreviewDialog 打印预览对话框 - printPreviewControl  打印预览控件. 只需要把预览对象给他设置上就好 - printDialog  打印对话框 打印界面里面是否禁用页面范围.打印到文件等从Pri

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

MDI窗体容器 多文档界面(Multiple-Document Interface)简称MDI窗体.MDI窗体用于同时显示多个文档,每个文档显示在各自的窗口中.MDI窗体中通常有包含子菜单的窗口菜单,用于在窗口或文档之间进行切换. (1)首先要设定主窗体是一个MDI窗体的容器,因为只有如此才能够在此主窗体上面添加MDI窗体,从而实现对MDI编程,具体实现语句如下: 1 this.IsMdiContainer = true ; (2)在主窗体上面新建一个MDI窗体.在程序中,新建一个MDI窗体的命

MDI窗体容器

MDI窗体容器: 一般来说,窗体是顶级容器,不允许放在其他任何容器内,但是如果将某个窗体的IsMdiContainer属性设置为True,那此窗体就会成为窗体容器,可以在其中放入其他窗体 在内部的窗体不管怎么调整,是无法跳出其父级窗体容器的 注:如果想让内部窗体一直最大化并且不要其显示最大化最小化按钮,可将其FormBorderStyle设置为None,Win7系统另外需要将此窗体放入一个Panel容器中 private void 销售ToolStripMenuItem_Click(object

C#写的几段WinForm MDI窗体控制的代码分享

/// <summary> /// 功能:MDI程序中设置主窗体大小为显示器工作区大小 /// </summary> /// <param name="MainForm">主窗体实例</param> public static void SetMainFormSize(Form MainForm) { MainForm.Location = new Point(0, 0); MainForm.Width = Screen.PrimaryS

C#-WinForm-MDI窗体容器、权限设置

MDI窗体容器 - 放窗体的容器 窗体时顶级控件,是不允许放到其他的控件或窗体中的 (李献策lxc) 窗体属性中有一个属性:IsMdiContainer - 确定该窗体是否是MDI容器 在窗体中放一个顶部菜单 点击<销售>按钮会在窗体中弹出一个新的窗体 //销售 private void 销售ToolStripMenuItem_Click(object sender, EventArgs e) { Form5 f5 = new Form5(); f5.MdiParent = this; f5.

C# Winform学习---MDI窗体的设计,PictureBox控件(图片上一页下一页),Timer控件,MenuStrip控件

一.MDI窗体的设计 1.MDI简介 MDI(Multiple Document Interface)就是所谓的多文档界面,与此对应就有单文档界面 (SDI), 它是微软公司从Windows 2.0下的Microsoft Excel电子表格程序开始引入的,Excel电子表格用户有时需要同时操作多份表格,MDI正好为这种操作多表格提供了很大的方便,于是就产生了MDI程序 2.效果图: 如下图所示,多窗体嵌套,其中一个是父窗体,其条是子窗体. 横向排列下面的窗体: 纵向排列下面的窗体: 关闭全部子窗

窗体容器MDI

什么是窗体容器MDI 效果和容器TabelControl差不多,区别就是一个是用来存放控件,一个来存放Form窗体 MDI应用 (1)如何把一个窗体变成MDI窗体 选中窗体,在窗口样式属性中,有一个属性样式叫做IsMdiContainer,选中True就把该窗体变成了一个MDI窗体 (2)把窗体放进去 //设置只能打开唯一集合,用来存放记录打开的Form List<Form> AllForm = new List<Form>(); private void 打开111ToolStr