C#基础入门 十

Windows应用程序的界面设计

  • Form.cs:窗体文件,一般用于存放程序员为窗体编写的代码;

  • Form.Designer.cs:窗体设计文件,其中的代码是由VS自动生成的,一般不需要修改;

  • Program.cs:主程序文件,其中包含程序入口的Main()方法。

  • 创建一个简单的用户登录界面(图19),需要两个Label,两个TextBox,两个Button。

  • 编写事件处理程序:使用VS创建的Windows应用程序也是事件驱动的,并且VS已经定义好很多窗体和控件的时间,比较常用的有窗体的Load时间、按钮的Click事件等。在VS中编写事件处理程序的具体步骤如下:

    • 单击要创建事件处理程序的窗体或控件;

    • 在属性窗口中单击事件按钮(图20);

    • 单击处理的事件;

    • 为处理方法命名;

    • 双击定位到事件处理方法;

    • 编写处理代码。

  • 事件函数:事件处理方法的定义是自动生成的,它提供两个用来正确处理事件的参数,参数如下:sender是事件源,表示是谁触发了一个事件,则在这个事件中,事件源就是按钮。不同的控件可能会共用同一个事件处理方法,可以通过sender得到触发事件的控件,这需要进行强制类型转换。e是事件参数(EventArgs)对象,不同的事件会有不同的事件参数。

  • 消息框:消息框通常用于向用户显示通知消息,它是一个MessageBox对象,创建消息框需要用到MessageBox的Show()方法,它是一个重载函数。通常用到的消息框有以下4种类型:

    • 只显示提示文字的消息框:MessageBox.Show(String);
    • 显示提示文字、标题的消息框:MessageBox.Show(String,String);
    • 显示提示文字、标题、按钮的消息框:MessageBox.Show(String,String,MessageBoxButtons);
    • 显示提示文字、标题、按钮、图标的消息框:MessageBox.Show(String,String,MessageBoxButtons,MessageBoxIcon);
    • 在第一个例子中添加响应“取消”按钮的单击事件,实践代码如下,结果如下图所示(图18):

private void Cancel_Click(object sender, EventArgs e)
{
DialogResult result = MessageBox.Show("确定要取消吗?", "操作提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (result == DialogResult.Yes)
{
this.Close();
}
}
  • 用户输入验证:修改上述例子,单击“确定”按钮,弹出消息框,显示登陆消息提示。具体步骤:

    • 给“确定”按钮添加Click事件;
    • 处理“确定”按钮的单击事件,弹出消息框,如果没有输入用户名或密码,弹出相应的消息框给出提示,如果已经输入用户名和密码,则弹出消息框确定用户是否登录。
private void OK_Click(object sender, EventArgs e)
{
//判断输入的用户名是否为空
if (this.userName.Text.Trim().Equals(string.Empty))
{
MessageBox.Show("请输入用户名!");
this.userName.Focus();//是该文本框获得焦点
}
//判断输入的密码是否为空
else if (this.Pwd.Text.Trim().Equals(string.Empty))
{
MessageBox.Show("请输入密码!");
this.Pwd.Focus();
}
else
{
DialogResult result = MessageBox.Show("确定要登录吗?","登录提示",MessageBoxButtons.OKCancel,MessageBoxIcon.Information);
if (result == DialogResult.OK)
{
MessageBox.Show("登录成功!");
}
}
}
- 运行结果如下图所示:(图21、22、23)

控件进阶

  • 选项类控件:单选按钮为用户提供两个或多个呼哧选项组成的选项集,用户在一组单选按钮中只能选择一个。
  • 单选按钮的应用--话费充值:选择充值的金额并输入手机号码,单击“充值”按钮,显示充值消息提示,界面设计如下图所示(图24):

 private void btnRecharge_Click(object sender, EventArgs e)
{
int money = 0;
if (phonename.Text == "")
{
MessageBox.Show("请输入充值号码!");
}
else if (phonename.TextLength < 11)
{
MessageBox.Show("非手机号码不能充值!");
}
else
{
if (Rdl10.Checked == true)
{
money = 10;
}
else if (Rdl30.Checked == true)
{
money = 30;
}
else if (Rdl50.Checked == true)
{
money = 50;
}
MessageBox.Show("充值成功!充值号码:"+phonename.Text+",充值金额"+money);
}
}
  • 运行结果如下图所示(图25、26):

C#基础入门 十的更多相关文章

  1. MyBatis基础入门《二十》动态SQL(foreach)

    MyBatis基础入门<二十>动态SQL(foreach) 1. 迭代一个集合,通常用于in条件 2. 属性 > item > index > collection : ...

  2. MyBatis基础入门《十九》动态SQL(set,trim)

    MyBatis基础入门<十九>动态SQL(set,trim) 描述: 1. 问题 : 更新用户表数据时,若某个参数为null时,会导致更新错误 2. 分析: 正确结果: 若某个参数为nul ...

  3. MyBatis基础入门《十八》动态SQL(if-where)

    MyBatis基础入门<十八>动态SQL(if-where) 描述: 代码是在<MyBatis基础入门<十七>动态SQL>基础上进行改造的,不再贴所有代码,仅贴改动 ...

  4. MyBatis基础入门《十六》缓存

    MyBatis基础入门<十六>缓存 >> 一级缓存 >> 二级缓存 >> MyBatis的全局cache配置 >> 在Mapper XML文 ...

  5. MyBatis基础入门《十五》ResultMap子元素(collection)

    MyBatis基础入门<十五>ResultMap子元素(collection) 描述: 见<MyBatis基础入门<十四>ResultMap子元素(association ...

  6. MyBatis基础入门《十四》ResultMap子元素(association )

    MyBatis基础入门<十四>ResultMap子元素(association ) 1. id: >> 一般对应数据库中改行的主键ID,设置此项可以提高Mybatis的性能 2 ...

  7. MyBatis基础入门《十二》删除数据 - @Param参数

    MyBatis基础入门<十二>删除数据 - @Param参数 描述: 删除数据,这里使用了@Param这个注解,其实在代码中,不使用这个注解也可以的.只是为了学习这个@Param注解,为此 ...

  8. MyBatis基础入门《十 一》修改数据

    MyBatis基础入门<十 一>修改数据 实体类: 接口类: xml文件: 测试类: 测试结果: 数据库: 如有问题,欢迎纠正!!! 如有转载,请标明源处:https://www.cnbl ...

  9. MyBatis基础入门《十》添加数据

    MyBatis基础入门<十>添加数据 描述: 修改了实体类:TblClient.java,将其字段:cbirthday 由String类型改成了Date类型. TblClient.java ...

随机推荐

  1. 常用数据结构的功能及复杂度总结(OI)

    不定长数组 维护一个序列 在末尾插入/删除均摊O(1) 任意位置插入O(n) 指定位置查询/修改O(1) 空间O(n) 链表 维护一个序列 定位到第i个位置O(n) 在任意位置(已定位到该位置)插入/ ...

  2. Some index files failed to download. They have …… or old ones used instead

    问题: 平台:Ubuntu12.04 W: Failed to fetch http://us.archive.ubuntu.com/ubuntu/dists/precise/universe/bin ...

  3. 【HDU】4352 XHXJ's LIS(数位dp+状压)

    题目 传送门:QWQ 分析 数位dp 状压一下现在的$ O(nlogn) $的$ LIS $的二分数组 数据小,所以更新时直接暴力不用二分了. 代码 #include <bits/stdc++. ...

  4. 利用MessageFormat实现短信模板的匹配

    其实没什么技术含量,因为老是想不起来,所以在此文做下记录. 通常我们的应用系统中都会有很多短信的发送,或者是信息邮件等的推送,而这些信息却有着相同的共性,比如只是用户名换了下. 像下面这条,除了红色字 ...

  5. django-admin添加权限

    后台manage页面: 可以通过用户直接添加权限,如果需要添加多个权限,则可以通过组,先将多个权限添加个组(总经理,秘书),在个用户添加这个组(总经理,秘书).  代码实现: 实际就是添加多对多的关系 ...

  6. django关于静态的信息的配置

    今天搭建完,django后,访问 admin 发现  样式没有加载 需要搭建静态的配置 1 设置项目目录的静态目录 用来存放静态的文件 在setttings.py中 添加以下参数  在 STATIC_ ...

  7. CImage 往Picture Control贴图 图像显示不正常

    在使用CImage 往vc控件 picture Control 上贴图的时候图像显示不太正常如图: 已知原始图片的宽高为640*640  而我上面picture Control  控件宽高小于原始图像 ...

  8. python变量作用域

    [python变量作用域] 几个概念: python能够改变变量作用域的代码段是def.class.lamda. if/elif/else.try/except/finally.for/while 并 ...

  9. 创建和运行Java项目

    ---------siwuxie095                     首先在左侧的工程管理面板 Package Explorer 中,右键->New->Java Project ...

  10. Java核心技术-集合

    在实现方法时,选择不同的数据结构会导致其实现风格以及性能存在着很大的差异,例如: 需要快速地搜索成千上万个有序的数据项吗?需要快速地在有序的序列中插入和删除元素吗?需要建立键与值之间的关联吗? 1 J ...