C# 编写 WinForm 窗体应用程序(第三期)

简介: 文本框 (TextBox) 是在窗体中输入信息时最常用的控件,通过设置文本框属性可以实现多行文本框、密码框等。

C# TextBox

文本框 (TextBox) 是在窗体中输入信息时最常用的控件,通过设置文本框属性可以实现多行文本框、密码框等。

在窗体上输入信息时使用最多的就是文本框。

除了前面 C# Label、LinkLabel 中介绍的控件属性以外,文本框还有一些不同的属性, 如下表所示:


image.png


文本框控件最常使用的事件是文本改变事件 (TextChange),即在文本框控件中的内容改变时触发该事件。

下面通过实例来演示文本框的应用。

【实例 1】创建一个窗体,在文本框中输入一个值,通过文本改变事件将该文本框中的值写到一个标签中。

根据题目要求,首先创建一个名为 TextBoxTest 的窗体,然后在窗体上添加文本框和标签,并在文本框的文本改变事件中编写代码。

具体的代码如下:

public partial class TextBoxTest : Form
{
    public TextBoxTest()
    {
        InitializeComponent();
    }
    //文本框文本改变事件
    private void textBox1_TextChanged(object sender, EventArgs e)
    {
        //将文本框中的文本值显示在标签中
        label2.Text = textBox1.Text;
    }
}

效果如下图所示:


从上面的运行结果可以看出,使用控件的属性和事件通过一行代码即可完成所需的功能。

【实例 2】实现简单的登录窗体。

本例中的登录窗体仅包括用户名和密码,将登录窗体命名为 LoginForm。

单击“登录”超链接标签,对文本框中输入的用户名和密码进行判断,如果用户名和密码的输入值分别为 xiaoming 和 123456,则弹出消息框提示“登录成功!”,否则提示“登录失败!”。

具体代码如下:

public partial class LoginForm : Form
{
    public LoginForm()
    {
        InitializeComponent();
    }
    //判断是否登录成功
    private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
    {
        //获取用户名
        string username = textBox1.Text;
        //获取密码
        string password = textBox2.Text;
        //判断用户名密码是否正确
        if ("xiaoming".Equals(username) && "123456".Equals(password))
        {
            MessageBox.Show("登录成功!");
        }
        else
        {
            MessageBox.Show("登录失败!");
        }
    }
}

运行窗体后输入用户名和密码,单击登录超链接标签,效果如下图:


C# Button

按钮主要用于提交页面的内容,或者是确认某种操作等。

按钮包括普通的按钮 (Button)、单选按钮 (RadioButton),本节主要讲解按钮的应用,单选按钮将在下一篇博客中为大家讲解。

按钮常用的属性包括在按钮中显示的文字 (Text) 以及按钮外观设置的属性,最常用的事件是单击事件。

【实例】实现一个简单的用户注册功能,并将提交的注册信息显示在新窗体的文本框中。

本例的用户注册界面中仅包括用户名和密码,通过单击“注册”按钮跳转到新窗体中并显示注册的用户名和密码,实现该功能分别使用 RegForm 窗体和 MainForm 窗体。

RegForm 窗体的界面如下图所示;



在注册时判断用户名和密码不能为空,并且要求两次输入的密码一致,实现的代码如下:

public partial class RegForm : Form
{
    public RegForm()
    {
        InitializeComponent();
    }
    //“确定”按钮的单击事件,用于判断注册信息并跳转到新窗口显示注册信息
    private void button1_Click(object sender, EventArgs e)
    {
        string name = textBox1.Text;
        string pwd = textBox2.Text;
        string repwd = textBox3.Text;
        if (string.IsNullOrEmpty(name))
        {
            MessageBox.Show("用户名不能为空!");
            return;
        }
        else if (string.IsNullOrEmpty(textBox2.Text))
        {
            MessageBox.Show("密码不能为空!");
            return;
        }
        else if (!textBox2.Text.Equals(textBox3.Text))
        {
            MessageBox.Show("两次输入的密码不一致!");
            return;
        }
        //将用户名和密码传递到主窗体中
        MainForm mainForm = new MainForm(name, pwd);
        mainForm.Show();
    }
    //“取消”按钮的事件,用于关闭窗体
    private void button2_Click(object sender, EventArgs e)
    {
        //关闭窗体
        this.Close();
    }

从上面的实例可以看出,如果需要在两个窗体中传递参数,则可以使用按钮和文本框。

结束语

各位互联网上的同事、同仁、同学们,C# 编写 WinForm 窗体应用程序(第三期)到这里就结束了。


相关文章
|
1月前
|
存储 安全 物联网
C# 在物联网 (IoT) 应用中的应用
本文介绍了C#在物联网(IoT)应用中的应用,涵盖基础概念、优势、常见问题及其解决方法。重点讨论了网络通信、数据处理和安全问题,并提供了相应的代码示例,旨在帮助开发者更好地利用C#进行IoT开发。
54 3
|
1月前
|
编译器 C#
c# - 运算符<<不能应用于long和long类型的操作数
在C#中,左移运算符的第二个操作数必须是 `int`类型,因此需要将 `long`类型的位移计数显式转换为 `int`类型。这种转换需要注意数据丢失和负值处理的问题。通过本文的详细说明和示例代码,相信可以帮助你在实际开发中正确使用左移运算符。
37 3
|
1月前
|
编译器 C#
c# - 运算符<<不能应用于long和long类型的操作数
在C#中,左移运算符的第二个操作数必须是 `int`类型,因此需要将 `long`类型的位移计数显式转换为 `int`类型。这种转换需要注意数据丢失和负值处理的问题。通过本文的详细说明和示例代码,相信可以帮助你在实际开发中正确使用左移运算符。
62 1
|
1月前
|
编译器 C#
c# - 运算符<<不能应用于long和long类型的操作数
在C#中,左移运算符的第二个操作数必须是 `int`类型,因此需要将 `long`类型的位移计数显式转换为 `int`类型。这种转换需要注意数据丢失和负值处理的问题。通过本文的详细说明和示例代码,相信可以帮助你在实际开发中正确使用左移运算符。
17 0
|
2月前
|
设计模式 程序员 C#
C# 使用 WinForm MDI 模式管理多个子窗体程序的详细步骤
WinForm MDI 模式就像是有超能力一般,让多个子窗体井然有序地排列在一个主窗体之下,既美观又实用。不过,也要小心管理好子窗体们的生命周期哦,否则一不小心就会出现一些意想不到的小bug
217 0
|
2月前
|
消息中间件 网络协议 安全
C# 一分钟浅谈:WebSocket 协议应用
【10月更文挑战第6天】在过去的一年中,我参与了一个基于 WebSocket 的实时通信系统项目,该项目不仅提升了工作效率,还改善了用户体验。本文将分享在 C# 中应用 WebSocket 协议的经验和心得,包括基础概念、C# 实现示例、常见问题及解决方案等内容,希望能为广大开发者提供参考。
160 0
|
2月前
|
API C# Windows
【C#】在winform中如何实现嵌入第三方软件窗体
【C#】在winform中如何实现嵌入第三方软件窗体
136 0
|
2月前
|
Web App开发 网络协议 API
基于C#编写一个远程桌面应用
基于C#编写一个远程桌面应用
66 0
|
2月前
|
Java 程序员 C#
【类的应用】C#应用之派生类构造方法给基类构造方法传参赋值
【类的应用】C#应用之派生类构造方法给基类构造方法传参赋值
15 0
|
1月前
|
C# 开发者
C# 一分钟浅谈:Code Contracts 与契约编程
【10月更文挑战第26天】本文介绍了 C# 中的 Code Contracts,这是一个强大的工具,用于通过契约编程增强代码的健壮性和可维护性。文章从基本概念入手,详细讲解了前置条件、后置条件和对象不变量的使用方法,并通过具体代码示例进行了说明。同时,文章还探讨了常见的问题和易错点,如忘记启用静态检查、过度依赖契约和性能影响,并提供了相应的解决建议。希望读者能通过本文更好地理解和应用 Code Contracts。
36 3