• C# 第六章『交互式图形界面』◆第3节:Form窗体—简单例子(1)


            一、公共控件——button

    拖入一个按钮button
    在Form1.Designer.cs中会自动生成这段button的代码

             这里我可以按F11查看一下窗体代码执行的顺序:

    标题

             选中控件按F4,可以快速打开此控件都属性(注意:不要和其他控件或者主窗体都属性混淆了)

            属性—外观—Text             中可以改变与控件中的显示文字。

            属性—设计—(Name)        这里的是代码中用来标识该对象的名称。

            属性—布局—Anchor        定义某个空间绑定到容器都边缘。当控件锚定到某个方向时,则该控件与此方向都边缘距离将保持不变。

            属性—外观—BackColor                               控件都背景颜色。

            属性—外观—BackgroundImage                   该控件都背景图像。

            属性—外观—BackgroundImageLayout        该控件都背景图像在控件中的布局方式。None、Tile、Center、Stretch、Zoom

            属性—行为—ContextMenuStrip                    当用户在该控件范围内时点击右键显示快捷菜单。步骤如下:

            二、菜单和工具栏——ContextMenuStrip(右击关联的控件显示的菜单栏)

    ContextMenuStrip拖入窗体中,

    同时会在Form1.cs中生成以下代码:

    在属性中选中此菜单与控件完成绑定

            属性—外观—Cursor          鼠标指针移到该控件上方时显示都指针图形。

            属性—行为—Visible          确定该控件是可见的还是隐藏的。

            属性—行为—Enabled        指示是否已启动该控件。True是表示已启用,Flase表示未启用。

            属性—外观—FlatStyle        鼠标移动到该控件并单击时,该控件都外观。备注:Popup有点3d的感觉。

            属性—外观—FrontColor        控件的前景色,用于显示文本。

            备注:,这里可以选择按首字母顺序排列,方便查找。

            三、公共控件——TextBox(允许用户输入文本)

             TextBox常用属性:

            WordWrap:是否自动换行

            ScrollBars:是否添加滚动条,Both标识上下左右都可以有滚动条。

            PasswordChar:输入任何内容,都会变成你这里定义的字符。

            TextBox常用事件:

            TextChanged:在控件上更改Text属性的值时引发的事件

    1. using System;
    2. using System.Collections.Generic;
    3. using System.ComponentModel;
    4. using System.Data;
    5. using System.Drawing;
    6. using System.Linq;
    7. using System.Text;
    8. using System.Windows.Forms;
    9. namespace _20220724_3
    10. {
    11. public partial class Form1 : Form
    12. {
    13. public Form1()
    14. {
    15. InitializeComponent();
    16. }
    17. private void textBox1_TextChanged(object sender, EventArgs e)
    18. {
    19. label2.Text = textBox1.Text;
    20. }
    21. }
    22. }

           四、事件

    双击此处,可以跳转到后台代码处

     修改此处代码为:

    1. private void button1_Click(object sender, EventArgs e)
    2. {
    3. MessageBox.Show("Hello World");
    4. }

            五、案例1:多窗体

    1. //Form1.cs
    2. using System;
    3. using System.Collections.Generic;
    4. using System.ComponentModel;
    5. using System.Data;
    6. using System.Drawing;
    7. using System.Linq;
    8. using System.Text;
    9. using System.Windows.Forms;
    10. namespace _20220724
    11. {
    12. public partial class Form1 : Form
    13. {
    14. public Form1()
    15. {
    16. InitializeComponent();
    17. }
    18. private void Form1_Load(object sender, EventArgs e)
    19. //当加载窗体时,将窗体对象放到Test类中的静态字段中。
    20. {
    21. Test._fr1Test = this;
    22. }
    23. private void button1_Click(object sender, EventArgs e)
    24. {
    25. Form2 frm2 = new Form2();//在内存中创建,不会显示出来
    26. frm2.Show();
    27. }
    28. }
    29. }
    1. //Form2.cs
    2. using System;
    3. using System.Collections.Generic;
    4. using System.ComponentModel;
    5. using System.Data;
    6. using System.Drawing;
    7. using System.Linq;
    8. using System.Text;
    9. using System.Windows.Forms;
    10. namespace _20220724
    11. {
    12. public partial class Form2 : Form
    13. {
    14. public Form2()
    15. {
    16. InitializeComponent();
    17. }
    18. private void button1_Click(object sender, EventArgs e)
    19. {
    20. Form3 frm3 = new Form3();//在内存中创建,不会显示出来
    21. frm3.Show();
    22. }
    23. }
    24. }
    1. //Form3.cs
    2. using System;
    3. using System.Collections.Generic;
    4. using System.ComponentModel;
    5. using System.Data;
    6. using System.Drawing;
    7. using System.Linq;
    8. using System.Text;
    9. using System.Windows.Forms;
    10. namespace _20220724
    11. {
    12. public partial class Form3 : Form
    13. {
    14. public Form3()
    15. {
    16. InitializeComponent();
    17. }
    18. private void button1_Click(object sender, EventArgs e)
    19. {
    20. Test._fr1Test.Close();
    21. }
    22. }
    23. }
    1. //Test.cs
    2. using System;
    3. using System.Collections.Generic;
    4. using System.Linq;
    5. using System.Text;
    6. namespace _20220724
    7. {
    8. public static class Test
    9. {
    10. public static Form1 _fr1Test;
    11. }
    12. }

            四、案例2:(当点不爱的时候,不爱的按钮会调到其他地方,让你无法点中)

            属性—事件—MouseEnter —在鼠标进入控件的可见部分的范围时发生。

    拖入2个button,并输入相关文字

    1. using System;
    2. using System.Collections.Generic;
    3. using System.ComponentModel;
    4. using System.Data;
    5. using System.Drawing;
    6. using System.Linq;
    7. using System.Text;
    8. using System.Windows.Forms;
    9. namespace _20220724_2
    10. {
    11. public partial class Form1 : Form
    12. {
    13. public Form1()
    14. {
    15. InitializeComponent();
    16. }
    17. private void button1_Click(object sender, EventArgs e)
    18. {
    19. MessageBox.Show("我也一样");
    20. this.Close();//关闭主窗体
    21. }
    22. private void button2_MouseEnter(object sender, EventArgs e)
    23. {
    24. //当鼠标进入按钮的可见部分的时候,给按钮一个新的坐标。
    25. int x = this.ClientSize.Width-button2.Width;//获取或设置窗体工作区的大小。
    26. int y = this.ClientSize.Height - button2.Height;
    27. Random r = new Random();
    28. //给按钮一个随机的新坐标。
    29. button2.Location = new Point(r.Next(0,x+1),r.Next(0, y + 1));
    30. }
    31. private void button2_Click(object sender, EventArgs e)
    32. {
    33. MessageBox.Show("还是被你点到了");
    34. }
    35. }
    36. }
  • 相关阅读:
    智慧住建工程项目监管数字化管理解决方案
    JAVA毕业设计酒店预约及管理系统计算机源码+lw文档+系统+调试部署+数据库
    如何靠掌握自己的大数据打破信息流的壁垒?
    安防监控系统EasyCVR平台设备通道绑定AI算法的功能设计与开发实现
    Effective C++条款20:宁以pass-by-reference-to-const替换pass-by-value
    【Java】抽象类案例
    单链表OJ题——11.随机链表的复制
    如何有效改进erp管理系统?erp管理系统改进建议方向
    Linux---(三)基本指令大全
    MongoDB 基础了解(一)
  • 原文地址:https://blog.csdn.net/qq_45336030/article/details/125962722