十二 C# WINDOW窗体技术及基础控件(1)

1、创建winform程序

1.1 RAD工具

  • RAD:Rapid Application Development ——快速 应用 开发
  • 创建用户界面时,把控件从工具箱拖放到窗体上,把它们放在应用程序运行时需要的地方,再双击该空间,添加空间的处理程序。

1.2 WINDFORM

  • windform是windows Forms的缩写,是一种只能客户端技术
  • 用于创建传统的基于windows应用创徐的基本工具,可为用户提供信息,接收器输入的窗口,有着友好的界面外观的程序
  • 通常情况下,通过向窗体上添加空间并开发响应的程序用来相应用户的操作,生成windows窗体应用程序。
  • 控件(Controls)是显示数据或接受数据输入的相对独立的用户界面(UI)元素。

十二 C# WINDOW窗体技术及基础控件(1)_第1张图片
十二 C# WINDOW窗体技术及基础控件(1)_第2张图片
十二 C# WINDOW窗体技术及基础控件(1)_第3张图片
十二 C# WINDOW窗体技术及基础控件(1)_第4张图片

  • 入口点:main()仍然是程序的入口点
  • 运行:仍然是点击启动
  • 可最大最好还原关闭
  • 程序运行时,首先执行主函数中的窗体
  • 快速切换到UI界面的方法
    • 双击Foms.cs

    • 在Form.cs空白处右击
      十二 C# WINDOW窗体技术及基础控件(1)_第5张图片

    • shift+F7/F7

  • 创建窗体实质:利用System.Windows.Forms类或其派生类来创建。我们在拖动的时候,其实就是创建了一个对象。
  • 引用命名空间,如何删除多余的命名空间
    十二 C# WINDOW窗体技术及基础控件(1)_第6张图片

2、窗体的添加与删除

窗体也属于控件
添加窗体:
十二 C# WINDOW窗体技术及基础控件(1)_第7张图片
十二 C# WINDOW窗体技术及基础控件(1)_第8张图片
主窗体:在main函数当中创建的窗体对象,我们称只为你这个窗体应用程序的主窗体。也就一位这,当将主窗体关闭后,整个应用程序都关闭了

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace _2_窗体的添加与删除
{
    static class Program
    {
        /// 
        /// 应用程序的主入口点。
        /// 
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1()); //此处的窗体通常称为主窗体
        }
    }
}

删除
十二 C# WINDOW窗体技术及基础控件(1)_第9张图片

3、窗体常用属性

设置窗体属性有两种方法:
一种是通过属性面板(三种方法):右键,视图 ,F4
一整是通过代码:窗体唯一标识.属性名=属性值
十二 C# WINDOW窗体技术及基础控件(1)_第10张图片
十二 C# WINDOW窗体技术及基础控件(1)_第11张图片
十二 C# WINDOW窗体技术及基础控件(1)_第12张图片

3.1 常用属性

BackColor:设置窗体背景颜色
BackgroundImage:设置窗体背景图片(自动拉伸)
Cursor:鼠标光标形状
HelpButton:是否显示帮助按钮,不能与最大化最小化同时显示
MaxiMizeBox:最小化按键显示
MinimizeBox:最小化按键显示
Icon:图标
MainMenuStrip:为本窗体指定主要MenuStrip
MaximumSize:最大化尺寸(水平方向0,垂直方向0代表适屏全屏)
MinimumSize:最小化尺寸(当MaximumSize与MinimumSize相同的值时,最小化后将无法拖动改变大小)
Name:窗体的唯一标识名(在后台要获得前台的控件对象,需要使用Name属性)
Text:窗体标题(显示在窗体上方的名称)
showIcon:确定窗体是否显示图标
showInTaskbas:确定窗体是否在windows任务栏中显示
Size:设置窗体大小
statPosition:确定窗体第一次出现的位置
topMost:是否居顶

clientSize:工作区的宽度和高度(size是整个window的宽度和高度。clientsize是工作区的宽度和高度,去掉border和标题栏的宽度)

3.2 使用代码修改属性

双击窗体切换到代码页面

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 _3_窗体属性
{
    public partial class mainForm : Form
    {
        public mainForm()
        {
            InitializeComponent();
        }

        private void mainForm_Load(object sender, EventArgs e)
        {
            this.Text = "第一个窗体";    
        }
    }
}

5、窗体常用事件

  • 事件:即发生的事。简单理解为用户的操作,它有对象引发。

  • 查看方法:窗体的所有事件都能在属性面板里查看
    十二 C# WINDOW窗体技术及基础控件(1)_第13张图片

  • 应用程序需要在事件发生时进行响应,因此事件分为

    • 注册事件:必须为对象注册事件测绘被执行
    • 触发事件:注册后的事件必须触发才可发生。
  • 添加事件:如果为窗体添加一事件,只要在事件面板里选择添加事件,在其后面的空格里双击,响应的事件将自动生成。默认诶选中的是最常用的事件
    十二 C# WINDOW窗体技术及基础控件(1)_第14张图片
    事件的本质就是方法,常用事件有:
    Load:窗体运行完成即为加载,窗体加载完成触发事件
    click: 单击事件,不仅包含鼠标的点击,还包含键盘的响应
    DoubleClick:双击事件
    FormClosed:窗体关闭事件(窗体已经被关闭)
    KeyDown:键被按下时触发(保持被按下的状态)
    KeyPress:用户按下并释放某个按键被触发
    KeyUp:键被释放后触发
    mouseClick:鼠标点击
    MouseDoubleClick:鼠标双击
    MouseDown::鼠标按键按下
    MouseHover:鼠标光标悬停
    MouseMove:鼠标移动
    MouseUp:鼠标释放
    MouseEnter:当用户将鼠标指针移动到对象内时触发(mouseenter mousemove区别)

6、窗体中添加控件与窗体显示和隐藏

6.1 添加控件

添加控件的方法:拖、拉、拽

十二 C# WINDOW窗体技术及基础控件(1)_第15张图片
十二 C# WINDOW窗体技术及基础控件(1)_第16张图片
添加控件的另一个方法:即通过窗体的controls类的ADD方法格式如下:
窗体的标识.Controls.Add(控件标识符)

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 窗体添加控件及窗体显示和隐藏
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            Button mybutton = new Button();
            mybutton.Text = "添加的新按钮";
            this.Controls.Add(mybutton);

        }
    }
}

6.2 窗体显示和隐藏

窗体的显示与隐藏是通过Show方法和Hide方法来实现的,格式如下:
窗体标识符.show
窗体标识符.hide

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 窗体添加控件及窗体显示和隐藏
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            Button mybutton = new Button();
            mybutton.Text = "添加的新按钮";
            this.Controls.Add(mybutton);

        }

        private void Form1_Click(object sender, EventArgs e)
        {
            Form2 myform2 = new Form2();
            myform2.Show();
            Form1 myfrom1 = new Form1();
            myfrom1.Hide();
        }
    }
}

7、MDI窗体

  • SDI窗体:single document interface 单文旦窗体
  • MDI窗体(myltiple-document interface 多文档界面)用于同时显示多个文档,MDI窗体的创建避免了用户打开很多窗口的时候任务单中挤满了窗体
  • MDI窗体使用方法
    • 确定一个主窗体,把窗体的IsMdiContainer属性设置为true
    • 创建子窗体,并设置他们的主窗体
      十二 C# WINDOW窗体技术及基础控件(1)_第17张图片
      十二 C# WINDOW窗体技术及基础控件(1)_第18张图片
      十二 C# WINDOW窗体技术及基础控件(1)_第19张图片
      十二 C# WINDOW窗体技术及基础控件(1)_第20张图片
      十二 C# WINDOW窗体技术及基础控件(1)_第21张图片
      十二 C# WINDOW窗体技术及基础控件(1)_第22张图片
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 _7_MDI窗体
{
    public partial class MainForm : Form
    {
        public MainForm()
        {
            InitializeComponent();
        }

        private void 新建ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            childForm mychildform = new childForm();
            mychildform.MdiParent = this;   //this 代表所在的类,此方法属于MainForm,所以this代表MainForm,
            mychildform.Show();
        }

        private void 层叠ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            LayoutMdi(MdiLayout.Cascade);// LayoutMdi()在父窗体内排列多文档界面,MdiLayout在父窗体内指定多文档子窗体的布局,Cascade所有子窗体层叠在子窗体内


        }

        private void 垂直ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            LayoutMdi(MdiLayout.TileVertical);
        }

        private void 水平ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            LayoutMdi(MdiLayout.TileHorizontal);

        }

        private void 关闭ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Close();
        }
    }
}

8、窗体中空间的基本操作

  • 当控件添加到窗体中之后,用户可以使用多种方式对他们进行操作,如对其、调整大小、顺序、调整间距等。
  • 控件操作的三种方式:菜单,工具栏,代码(菜单和工具栏可以对多个控件进行操作)
    • 属性调整大小
      十二 C# WINDOW窗体技术及基础控件(1)_第23张图片
    • 代码调整大小
using System;
using System.Drawing;
using System.Windows.Forms;

namespace 窗体控件中的基本操作
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button9_Click(object sender, EventArgs e)
        {
            button9.Size = new Size(200,200);  // 此种方式是只有在响应时间触发后才改变。此处是点击事件
        }
    }
}

	 - 使用工具栏调整大小:调整一个控件(button8)与另一个控件(button8)一样大小

十二 C# WINDOW窗体技术及基础控件(1)_第24张图片

  • 菜单调整大小

十二 C# WINDOW窗体技术及基础控件(1)_第25张图片

  • 顺序:
    - 选择控件,【格式】【顺序】|【置于顶层】/【置于底层】
    - 工具栏置于顶层和置于底层
    十二 C# WINDOW窗体技术及基础控件(1)_第26张图片

     - 代码实现:BringToFront方法和SendToBack方法
    
using System;
using System.Drawing;
using System.Windows.Forms;

namespace 窗体控件中的基本操作
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            button9.Size = new Size(200, 200);  // 此种方式是只有在响应时间触发后才改变。此处是点击事件
            button1.BringToFront(); //置于顶层
            button7.SendToBack();// 置于底层
        }
    }
}

  • 对齐
  • 【shift】或【ctrl】或框选选择多个控件 【格式】| 【对齐】(以第一次选择空间为基准)
    十二 C# WINDOW窗体技术及基础控件(1)_第27张图片
  • Location属性定位实现对齐(属性面板、代码)
using System;
using System.Drawing;
using System.Windows.Forms;

namespace 窗体控件中的基本操作
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            button9.Size = new Size(200, 200);  // 此种方式是只有在响应时间触发后才改变。此处是点击事件
            button1.BringToFront(); //置于顶层
            button7.SendToBack();// 置于底层
            button7.Location = new System.Drawing.Point(100,50);  //坐标是以窗体左上角为0,0向右和向下延伸

        }
    }
}

十二 C# WINDOW窗体技术及基础控件(1)_第28张图片

你可能感兴趣的:(C#,c#,windows,ui)