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

一、MDI窗体的设计

1.MDI简介

MDI(Multiple Document Interface)就是所谓的多文档界面,与此对应就有单文档界面 (SDI), 它是微软公司从Windows 2.0下的Microsoft Excel电子表格程序开始引入的,Excel电子表格用户有时需要同时操作多份表格,MDI正好为这种操作多表格提供了很大的方便,于是就产生了MDI程序

2.效果图:

如下图所示,多窗体嵌套,其中一个是父窗体,其条是子窗体。

横向排列下面的窗体:

纵向排列下面的窗体:

关闭全部子窗体:

3.实现过程

1)、新建一个window窗体程序

2)新建4个form

3)、后端实现代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace mdi设计
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void 显示子窗体ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Form f2 = new Form2();
            f2.MdiParent = this;//指定其mdi父窗体
            f2.Show();

            Form f3 = new Form3();
            f3.MdiParent = this;
            f3.Show();

            Form f4 = new Form4();
            f4.Show();
            f4.MdiParent = this;

        }

        private void 横向排列ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            LayoutMdi(MdiLayout.TileHorizontal);
        }

        private void 纵向排列ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            LayoutMdi(MdiLayout.TileVertical);
        }

        private void 关闭全部窗体ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            foreach (Form f in this.MdiChildren)
            {
                f.Close();
            }

        }
    }
}

全部源码实现:https://github.com/amosli/CSharp/tree/mdi

其中菜单选项用的是MenuStrip控件,其使用也是非常简单方便的,如下所示:

二、MenuStrip控件

新建一个MenuStrip控件,然后写入名称即可,双击可以定义其事件,如上面的横向排列和纵向排列。

三、PictureBox控件和Timer控件

1.先看效果图:

2.实现过程

新建PictureBox和timer的控件

为了实现PictureBox控件的相对大小,这里要注意更改Anchor布局为全部勾选!

设置图片显示的格式:

【timer控件】间隔时间设置:

间隔执行的事件:

3.后台实现代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace PictureBox控件学习
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        /// <summary>
        /// timer更改时间
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void timer1_Tick(object sender, EventArgs e)
        {
            lbTime.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
        }

        public static String ImgDirPath = @"C:\work\img";
        String[] imgPaths = Directory.GetFiles(ImgDirPath, "*.jpg");
        public static int ImgNum = 0;
        /// <summary>
        /// 实现上一页按钮
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnPrevious_Click(object sender, EventArgs e)
        {
            ImgNum--;
            if (ImgNum < 0)
            {
                ImgNum = imgPaths.Length-1;
            }
            pboGirls.ImageLocation = imgPaths[ImgNum];

        }

        /// <summary>
        /// 实现下一页按钮
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnNext_Click(object sender, EventArgs e)
        {
            ImgNum++;
            if (ImgNum >= imgPaths.Length)
            {
                ImgNum = 0;
            }
            pboGirls.ImageLocation = imgPaths[ImgNum];
        }

        /// <summary>
        /// 随机浏览
        /// </summary>
        Random rnd = new Random();
        private void button1_Click(object sender, EventArgs e)
        {
            pboGirls.ImageLocation = imgPaths[rnd.Next(imgPaths.Length)];
        }
    }
}

全部源码:https://github.com/amosli/CSharp/tree/picturebox

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

时间: 2024-10-06 20:05:54

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

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

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

2020年了,学习java应该选择线上还是线下?

学习java应该选择线上还是线下? 随着互联网技术的不断发展,编程语言的运用范围不断扩张,也就产生了IT行业.越来越多的人学习编程. 2020年,5G技术的不断完善,注定是互联网行业不平凡的一年.越来越多的新技术,也就意味着更多的就业机会和发展前景. 很多想学习java的萌新,不知道该选择线上还是线下,还是自学?我今天便说一下我的看法. 首先排除自学,先不说你有没有那么强的学习能力,自学其实远远比想象中的困难,这是过来人的经验之谈. 然后说说线下培训,市面上绝大部分培训机构都主打线下面对面授课,

.Net学习 第3季02 winform应用程序 MDI窗体设计 menuStrip

窗体2.3.4...只落在窗体1(父窗体)的范围内并且可以全部显示的设计---MDI窗体设计 在窗体1中创建menuStrip类的对象(菜单栏),设置其中一个的点击事件为显示窗体2.3.4 private void 显示子窗体ToolStripMenuItem_Click(object sender, EventArgs e) { Form2 f2 = new Form2(); f2.Show(); Form3 f3 = new Form3(); f3.Show(); Form4 f4 = ne

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

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

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

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

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窗体中有多个子窗体同时打开,假如不对其排列顺序进行调整,那么界面会非常的混乱,而且不容易浏览.那么如何解决这个问题呢?我们可以通过使用带有MdiLayout枚举的LayoutMdi方法来排列多文档界面父窗体中的子窗体.语法:public void LayoutMdi (MdiLayout value)value:是MdiLayout枚举值之一,用来定义MDI子窗体的布局.MdiLayout枚举用于指定MDI父窗体中子窗体的布局.语法:public enum MdiLayoutMdi

C#--WinForm项目主窗体设计

主窗体基本设置 大小.颜色.去边框.出现的位置 Panel控件 背景图.颜色.布局: Label标签 文本.字体.背景颜色.布局 按钮 布局.文本.字体颜色.背景色. 底部panel绑定控件边框.颜色 用label标签导入图标 SplitContainer容器 拖放时直接放不好操作设置属性: 设置不绑定到容器的边框 设置颜色 拖放调整合适大小: 固定左边panel1 不可拖动: 禁止全部panel不可拖动: 设置间距距离 左边框按钮 美化方法嵌入子窗体的设计 设置大小 和去除边框 组合框的俩种设

WinForm窗体界面设计

在设计窗体界面时,如何使容器内控件与容器边缘随着窗体放大或缩小始终保持不变,经过多次调试,得出以下经验 例如要使控件与容器的右边缘距离始终保持为20,就要对控件的以下属性进行设置 1:先对控件的Anchor属性设置为Right, 2:再对控件的Margin属性Right设置为20 如果要对控件的text与控件的边缘进行设置,就要对控件的Padding属性进行修改 tableLayoutPanel表格控件设置 要使tableLayoutPanel控件的行或列始终保持一样的大小,具体操作步骤如下 1