【可视化编程】实验3:C#窗体设计及使用

  • 说明:这是武汉理工大学计算机学院【可视化编程C#】课程的第三次实验代码:C#窗体设计及使用
  • >>点击查看WUTer计算机专业实验汇总
  • 谨记:纸上得来终觉浅,绝知此事要躬行。

实验目的

  掌握C#MDI窗体设计,一个主窗体、多个子窗体间的切换。掌握窗体中基本的控件设计方法,  labeltextboxgroupboxradiobuttoncomboBoxbutton等。掌握Messagebox的使用方法。

实验内容

  1、设计MDI窗体,一个主窗体,登录子窗体输入用户名和密码(系统设置默认用户登录信息:whut1234),如果用户名密码正确,消息框提示登录成功。如果用户名不正确,提示需先注册。如果密码错误,提示密码有误。

 

【可视化编程】实验3:C#窗体设计及使用_第1张图片

 

【可视化编程】实验3:C#窗体设计及使用_第2张图片

 

  2、注册子窗体设计,包括用户名、密码、确认密码(textbox)、性别(groupboxradiobutton)、专业(comboBox)等信息。点击“确认”按钮,如果用户名不为空,密码和确认密码一致,提示注册成功,并显示注册信息。否则提示错误信息。点击“重置”按钮,清空控件中的内容。点击“登录”按钮,回到登录窗体。

【可视化编程】实验3:C#窗体设计及使用_第3张图片

 

实验方案

1、新建一个Windows窗体应用,文件名:实验3:窗体设计及使用;

【可视化编程】实验3:C#窗体设计及使用_第4张图片

2、将初始生成的项重命名为:BackForm.cs,然后再新建两个项,名字分别为:LoginForm.cs(登陆界面),RegisterForm.cs(注册界面);

3、项BackForm.cs 界面设计如下:

【可视化编程】实验3:C#窗体设计及使用_第5张图片

  如上图,重命名是为了好记;在【属性栏】中将BackForm.cs的【ISMDIContainer】属性设置为“True”,该窗体就成为一个MDI父窗体;【Text】属性中输入窗口的名字。

4、LoginForm.cs(登陆界面)界面设计如下:

【可视化编程】实验3:C#窗体设计及使用_第6张图片

  将上图各个插件进行重命名操作是为了便于记忆,防止名字类似而记混。
  如果想将密码输入框设置为输入文本不可见格式,可将 UserPassword 控件的【PasswordChar】属性设置为“*”(即输入一个星号)即可。

5、RegisterForm.cs(注册界面)界面设计如下:

【可视化编程】实验3:C#窗体设计及使用_第7张图片

  将上图各个插件重命名为如图所示名称。其中将Major控件的【DropDownStyle】设置为“DropDownList”,即该下拉框只能选择而不能输入文字。

【可视化编程】实验3:C#窗体设计及使用_第8张图片

 

实验代码:

 

将各个控件按照上图命名完毕后,双击需要执行操作的按键,即可进入相应的代码输入框;

1、父窗口界面源代码

  BackForm.cs:

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 BackForm : Form
    {
        public BackForm()
        {
            InitializeComponent();
            LoginForm loginForm = new LoginForm();
            loginForm.MdiParent = this;
            loginForm.Show();
        }

        private void BackForm_Load(object sender, EventArgs e)
        {

        }
    }
}

 

 

 

2、登陆界面源代码:

【可视化编程】实验3:C#窗体设计及使用_第9张图片
  登陆界面,只需要双击【登陆】按键即可进入代码输入界面

【可视化编程】实验3:C#窗体设计及使用_第10张图片

详细源代码如下:
  LoginForm.cs:

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 LoginForm : Form
    { 
        public LoginForm()
        {
            InitializeComponent();
        }

        //点击【登录】操作
        private void Login_Click(object sender, EventArgs e)
        {
            //从用户名和密码文本框中读取字符串
            String userName = UserName.Text;
            String userPassword = UserPassword.Text;

            //如果用户没有输入用户名就点击登录按键,提示注册
            if(userName.Length == 0){
                DialogResult result = MessageBox.Show("用户名为空,是否注册新用户?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                if(result == DialogResult.Yes)
                {
                    RegisterForm registerForm = new RegisterForm();
                    registerForm.MdiParent = this.MdiParent;
                    registerForm.Show();
                    this.Hide();
                }
            }
            else
            {
                //如果密码框为空
                if (userPassword.Length == 0)
                {
                    MessageBox.Show("请输入密码!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
                else
                {
                    //匹配用户名和密码的正确性,如果正确:
                    if (String.Equals(userName, UserInfo.userName) && String.Equals(userPassword,UserInfo.userPassword)){
                        MessageBox.Show("登录成功!\n欢迎您,"+UserInfo.userName,"提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                        this.Hide();
                    }
                    //如果密码错误:
                    else if (String.Equals(userName, UserInfo.userName) && !String.Equals(userPassword, UserInfo.userPassword))
                    {
                        MessageBox.Show("密码错误!","提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    }
                    //如果该用户名不存在:
                    else
                    {
                        DialogResult result = MessageBox.Show("该用户不存在,是否注册新用户?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                        if (result == DialogResult.Yes)
                        {
                            RegisterForm registerForm = new RegisterForm();
                            registerForm.MdiParent = this.MdiParent;
                            registerForm.Show();
                            this.Hide();
                        }
                    }
                }
            }

        }
    }

    //全局变量,初始默认用户信息
    static class UserInfo
    {
        public static String userName = "whut";
        public static String userPassword = "1234";
        public static String userSex = "男";
        public static String Major = "计算机学院!";

    }
}

 

3、注册界面源代码:

【可视化编程】实验3:C#窗体设计及使用_第11张图片
只需要双击上图所示的三个按键即可进入相应的代码编辑区:

【可视化编程】实验3:C#窗体设计及使用_第12张图片

详细代码如下:

RegisterForm.cs

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 RegisterForm : Form
    {
        public RegisterForm()
        {
            InitializeComponent();
        }

        //注册操作
        private void Sure_Click(object sender, EventArgs e)
        {
            if(RUserName.Text.Length == 0)
            {
                MessageBox.Show("请输入用户名!", "提示",MessageBoxButtons.OK,MessageBoxIcon.Warning);
            }
            else
            {
                if(RUserPassword.Text.Length == 0)
                {
                    MessageBox.Show("请输入新密码!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
                else if(RUserPassword2.Text.Length == 0)
                {
                    MessageBox.Show("请确认新密码!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
                else if ( !String.Equals(RUserPassword.Text,RUserPassword2.Text))
                {
                    MessageBox.Show("密码输入不一致!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
                else
                {
                    //如果已选择性别
                    if(SexM.Checked || SexW.Checked)
                    {
                        if (Major.SelectedIndex != -1)
                        {
                            UserInfo.userName = RUserName.Text;
                            UserInfo.userPassword = RUserPassword.Text;
                            UserInfo.Major = Major.Text;

                            if (SexM.Checked)
                            {
                                UserInfo.userSex = "男";
                            }
                            else
                            {
                                UserInfo.userSex = "女";
                            }

                            MessageBox.Show("注册成功!" +
                                "\n用户名:" + UserInfo.userName +
                                "\n密 码:"+UserInfo.userPassword +
                                "\n性 别:"+UserInfo.userSex +
                                "\n专 业:"+UserInfo.Major, "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                        }
                        else
                        {
                            MessageBox.Show("请选择专业!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        }
                    }
                    else
                    {
                        MessageBox.Show("请选择性别!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    }
                }
            }
        }

        //重置操作
        private void Reset_Click(object sender, EventArgs e)
        {
            RUserName.Text = "";
            RUserPassword.Text = "";
            RUserPassword2.Text = "";
            SexM.Checked = false;
            SexW.Checked = false;
            Major.SelectedIndex = -1;

            UserInfo.userName = "";
            UserInfo.userPassword = "";
            UserInfo.userSex = "";
            UserInfo.Major = "";

            MessageBox.Show("重置成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
        }

        //返回登录操作
        private void Back_Click(object sender, EventArgs e)
        {
            LoginForm loginForm = new LoginForm();
            loginForm.MdiParent = this.MdiParent;
            loginForm.Show();
            this.Hide();
        }
    }
}

  注:此代码注册时并没有对用户名和密码的输入字符格式进行限制,可在此基础上加上输入字符的判断方法(如:禁止输入空格或者其他特殊字符,密码长度最低4位等)。

运行结果:

【可视化编程】实验3:C#窗体设计及使用_第13张图片

【可视化编程】实验3:C#窗体设计及使用_第14张图片

 

【可视化编程】实验3:C#窗体设计及使用_第15张图片

【可视化编程】实验3:C#窗体设计及使用_第16张图片

【可视化编程】实验3:C#窗体设计及使用_第17张图片

【可视化编程】实验3:C#窗体设计及使用_第18张图片

【可视化编程】实验3:C#窗体设计及使用_第19张图片

  部分运行界面如上图。

你可能感兴趣的:(可视化编程(C#))