1、winfrom定义

winform应用程序是一种智能客户端技术,我们可以使用winform应用程序帮助我们获得信息或者传输信息等。

2、属性

Name:在后台要获得前台控件的控件对象,需要使用Name属性;
Visible:指示一个空件是否可见;
Enabled:指示一个控件是否可用。

3、主窗体

在main函数中创建的窗体对象,我们称之为这个窗体应用程序的主窗体。也就意味着,当你将主窗体关闭后,整个应用程序也就关闭了。

4、如何实现在子窗体中关闭主窗体:

  1. 在项目里添加一个静态类,类中添加一个静态字段,字段的类型就是主窗体类型。
  2. 因为该字段是静态字段,所以整个项目都可以访问。在主窗体的load事件中写上代码
Test._frtest = this;

此时就将主窗体赋值给Test._frtest。
3. 然后在子窗体的按钮其他触发事件中写上代码就可以实现关闭主窗体

Test.frtest.close();

主窗体关闭时,也就会关闭所有的子窗体。

5、TextBox控件

WordWrap:指示文本框是否换行
PassWordChar:让文本框显示一个单一的字符
ScollBars:是否显示滚动条
事件:
TextChanged:当文本框中的内容改变时触发这个事件。

    txb_Name.Focus();//将焦点放在txb_name控件上

6、Timer

在指定的时间间隔内做一件指定的事情。

7、单选框和多选框

checked:指示这个控件是否处于选中状态,Bool类型
默认情况下,在一个窗体中,所有的单选按钮只允许选中一个,可以使用group box进行分组。

8、MDI窗体的设计

  1. 确定一个父窗体 ,将IsMdiContainer设置为true
  2. 创建子窗体,并且设置他们的父窗体
            Form2 frm2 = new Form2();
            frm2.MdiParent = this;
            frm2.Show();

            Form3 frm3 = new Form3();
            frm3.MdiParent = this;
            frm3.Show();

            Form4 frm4 = new Form4();
            frm4.MdiParent = this;
            frm4.Show();
  1. 设置子窗体横向排列和纵向排列
            LayoutMdi(MdiLayout.TileHorizontal);//横向排列
             LayoutMdi(MdiLayout.TileVertical);//纵向排列

9、Picture图片控件

SizeMode
1.Normal:
在 Normal 模式中,Image 置于 PictureBox 的左上角,凡是因过大而不适合 PictureBox 的任何图像部分都将被剪裁

2.StretchImage:
使用 StretchImage 值会使图像拉伸或收缩,以便适合 PictureBox

3.AutoSize:
使用 AutoSize 值会使控件调整大小,以便总是适合图像的大小。

4.CenterImage:
使用 CenterImage 值会使图像居于工作区的中心。

5.Zoom:
使用 Zoom 的值可以使图像被拉伸或收缩以适应 PictureBox;但是仍然保持原始纵横比

如何实现上一张,下一张切换

1、首先在窗体加载时设置控件的sizemode以及获得指定文夹的所有文件的全路径
path声明在方法外面,使其能全局访问

        private void Form1_Load(object sender, EventArgs e)
        {
            pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
            pictureBox1.Image = Image.FromFile(@"E:\华宝工作文件\001_项目文件\025_华宝新试验线设计\界面设计\页面\1主界面.png");
            //获得指定文件夹的所有文件的全路径
             path = Directory.GetFiles(@"E:\华宝工作文件\001_项目文件\025_华宝新试验线设计\界面设计\页面");
        }

2、上一张
Index声明在方法外面,使其能全局访问

        /// <summary>
        /// 点击更换上一张图片
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btn_Up_Click(object sender, EventArgs e)

        {

            index++;
            if (index > path.Length-1)
            {
                index = 0;
            }
            pictureBox1.Image = Image.FromFile(path[index]);

        }

3、下一张

        /// <summary>
        /// 点击更换下一张图片
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btn_Down_Click(object sender, EventArgs e)
        {
            index--;
            if (index < 0)
            {
                index = path.Length-1;
            }
            pictureBox1.Image = Image.FromFile(path[index]);
        }

10、Directory操作文件夹

            Directory.CreateDirectory(@"c:\aaa\bbb");// 创建目录
            Directory.Delete(@"c:\aaa", true);//删除目录
            Directory.Move(@"c:\aaa", @"c:\asdfg");//移动目录

            //获得指定文件夹下所有文件的全路径
            string[] path0 = Directory.GetFiles(@"E:\华宝工作文件\001_项目文件\025_华宝新试验线设计\界面设计\页面");
            for (int i = 0; i < path0.Length; i++)
            {
                Console.WriteLine(path0[i]);
            }

            //获得指定文件夹下指定后缀名的文件的全路径
            string[] path1 = Directory.GetFiles(@"E:\华宝工作文件\001_项目文件\025_华宝新试验线设计\界面设计\页面","*.png");
            for (int i = 0; i < path1.Length; i++)
            {
                Console.WriteLine(path1[i]);
            }

            //获取指定文件夹下所有文件夹的全部路径
            string[] path2 = Directory.GetDirectories(@"E:\华宝工作文件\001_项目文件\025_华宝新试验线设计");
            for (int i = 0; i < path2.Length; i++)
            {
                Console.WriteLine(path2[i]);
            }
            //判断指定文件夹是否存在
            if (Directory.Exists(@"E:\华宝工作文件\001_项目文件\025_华宝新试验线设计"))
            {
                Console.WriteLine("存在");
            }
            else
            {
                Console.WriteLine("不存在");
            }

11、webBrowser

uri

            string text = txt_Url.Text;
            Uri uri = new Uri("http://"+text);
            webBrowser1.Url = uri; 

12、Combox下拉框

DropDownStyle:控制下拉框的外观样式

13、多线程示例代码

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

namespace XCZT
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            Label.CheckForIllegalCrossThreadCalls = false;
        }

        ManualResetEvent ma = new ManualResetEvent(false);

        bool stop = false;

        //启动
        private void button1_Click(object sender, EventArgs e)
        {
            Thread thread = new Thread(Runtime);

            stop = false;

            ma.Set();// 信号打开,不阻塞当前线程

            thread.Start();
        }

        /// <summary>
        /// 线程
        /// </summary>
        void Runtime()
        {
            for (int i = 1; i <= 100; i++)
            {
                if (stop)
                {
                    return;
                }

                ma.WaitOne();//根据是否收到信号判断是否阻塞当前线程

                textBox1.AppendText("计时 :" + i + "\r\n");

                Thread.Sleep(100);
            }
        }

        //暂停
        private void button2_Click(object sender, EventArgs e)
        {
            ma.Reset();//信号关闭阻塞当前线程

            textBox1.AppendText("暂停中 :\r\n");
        }

        //继续
        private void button3_Click(object sender, EventArgs e)
        {

            ma.Set();//信号打开,不阻塞当前线程

            textBox1.AppendText("继续计时 :\r\n");
        }

        //停止
        private void button4_Click(object sender, EventArgs e)
        {
            stop = true;

            textBox1.AppendText("停止计时 \r\n");
        }
    }
}