C# 第六章『交互式图形界面』◆第1节:Form窗体—介绍

        一、创建WinForm程序

        WinForm是Windows Forms的缩写,用于创建传统的基于Windows应用程序的基本工具,可为用户提供信息、接收和输入的窗口。

        1、步骤:

新建项目—VS2017
VS2013的截图
创建完成后的界面—VS2017

         在解决方案资源管理器中,双击Program.cs文件,会跳转到一段自动生成的WinForm程序。

         在解决方案资源管理器中,双击Form.cs文件,会跳转到窗体界面。

         右击编辑窗体,选择查看代码,则会跳转到Form1()的方法代码处。

         二、窗体的添加与删除

添加新的窗体
对窗体进行删除

         三、窗体的属性

        窗体是用户设计应用程序界面的地方,有时也将窗体称为表单。在C#中,每个窗体都有一个窗体文件(.Designer.cs)和一个单元文件(.cs)。窗体文件保存着窗体上各个控件的属性;单元文件则是用户编写窗体的事件处理过程的地方。

        窗体的组成主要包括图标、标题、位置和背景等,而这些属性都在“属性”面板中进行设置,也可以用代码来实现。

        1、属性面板

        打开方式:

  1. 在窗体—右键—属性(注意:在需要的控件或窗体上右键)
  2. (选中需要设置的控件或窗体)菜单栏—视图—属性窗口
  3. (选中需要设置的控件或窗体)快捷键F4

排序:按分类或按字母进行排序,方便查找。

         四、窗体的事件

        事件的产生可以来自系统,也可以来自用户。事件是一种将发生的动作与代码相连的机制。因此事件是一个方法指针,它指向某个类实例的方法。

        1、添加事件

        如果要为窗体添加一个事件,只要在事件面板中选择要添加的事件,在其位置双击,相应的事件将会自动生成。

        ①窗体在加载时,触发一个窗体加载事件Load,

using System;
using System.Windows.Forms;

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

        private void Form1_Load(object sender, EventArgs e)//窗体的Load事件
        {
            MessageBox.Show("加载完成");
        }
    }
}

         ②单击窗体时,触发Click(单击)事件。

using System;
using System.Windows.Forms;

namespace _20220810_1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Click(object sender, EventArgs e)
        {
            MessageBox.Show("单击一次");
        }
    }
}

        ③关闭窗体时,触发FormClosing(关闭)事件。

using System;
using System.Windows.Forms;

namespace _20220810_1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            MessageBox.Show("确定?");
        }
    }
}

        2、删除事件

        如果直接在上述触发的代码中直接删除,会报错。此时需要进入设计器,删除相关代码才行。

        如果将上述案例中关闭窗体FormClosing(关闭)事件在Form()1中相关代码删除后,

         此时需要将this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Form1_FormClosing);这段代码删除才不会报错。

        五、窗体的显示和隐藏

        窗体的显示和隐藏是通过调用Show方法和Hide方法来实现的。格式为:

窗体标识符.Show();
窗体标识符.Hide();
//单击第一个窗体,会出现第二个窗体
using System;
using System.Windows.Forms;

namespace _20220810_1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Click(object sender, EventArgs e)
        {
            Form1 myForm = new Form1();
            myForm.Show();
        }
    }
}
  • 4
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C# 中,可以使用构造函数、属性或事件来传递数据。 1. 使用构造函数传递数据 在第一个窗体中,可以在打开第二个窗体时传递数据,例如: ```csharp // 在第一个窗体中 private void button1_Click(object sender, EventArgs e) { string data = "Hello World"; // 要传递的数据 Form2 form2 = new Form2(data); // 创建第二个窗体并传递数据 form2.Show(); // 显示第二个窗体 } // 在第二个窗体中 public Form2(string data) { InitializeComponent(); label1.Text = data; // 在标签中显示传递的数据 } ``` 2. 使用属性传递数据 在第一个窗体中,可以设置第二个窗体的属性来传递数据,例如: ```csharp // 在第一个窗体中 private void button1_Click(object sender, EventArgs e) { string data = "Hello World"; // 要传递的数据 Form2 form2 = new Form2(); form2.Data = data; // 设置第二个窗体的属性 form2.Show(); // 显示第二个窗体 } // 在第二个窗体中 public string Data { get; set; } // 定义属性来接收数据 private void Form2_Load(object sender, EventArgs e) { label1.Text = Data; // 在标签中显示传递的数据 } ``` 3. 使用事件传递数据 在第一个窗体中,可以定义一个事件,并在第二个窗体中订阅该事件来接收数据,例如: ```csharp // 在第一个窗体中 public event EventHandler<MyEventArgs> DataChanged; private void button1_Click(object sender, EventArgs e) { string data = "Hello World"; // 要传递的数据 DataChanged?.Invoke(this, new MyEventArgs(data)); // 触发事件 Form2 form2 = new Form2(); form2.Show(); // 显示第二个窗体 } // 在第二个窗体中 private void Form2_Load(object sender, EventArgs e) { Form1 form1 = (Form1)Application.OpenForms["Form1"]; // 获取第一个窗体的实例 form1.DataChanged += Form1_DataChanged; // 订阅事件 } private void Form1_DataChanged(object sender, MyEventArgs e) { label1.Text = e.Data; // 在标签中显示传递的数据 } public class MyEventArgs : EventArgs { public string Data { get; set; } public MyEventArgs(string data) { Data = data; } } ``` 以上是三种传递数据的方法,具体使用哪种方法取决于实际情况。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值