使用ErrorProvider控件验证文本框输入
ErrorProvider控件可以对窗体或控件上的用户输入进行验证。当验证用户在窗体中的输入或显示数据集内的错误时,都会要用到该控件。
ErrorProvider控件的主要方法是SetError方法,该方法可以指定错误信息字符串和错误图标应出现的位置。其使用格式为:
public void Set Error(Control control,string value)
value表示错误描述字符串;而参数control用于设置错误描述字符串的控件。
ErrorProvider控件有以下几个重要的属性。
(1)ContainerControl属性:父控件(通常为窗体),将ErrorProvider控件与数据绑定控件结合使用时,必须要奖ContainerControl属性设置为相应的容器,以便于该组件可以在窗体上显示错误图标。
(2)Icon属性:可以设置为自定义错误图标而不是默认图标设置。
(3)DataSource属性:ErrorProvider控件可为数据集显示错误信息。
(4)BlinkStyle属性:用于控制当确定错误后错误图标是否闪烁。该属性的NeverBlink值表示永不闪烁。
编写程序,使用ErrorProvider控件验证文本框输入是否正确。
在Form1窗体中添加errorProvider1控件和errorProvider2控件
接着添加三个Label控件,分别命名为“输入用户名”“输入密码”“再次输入密码”,同时对应三个TextBox控件。
errorProvider1控件用于判断“输入用户名”对应的textBox1控件文本框中的字符串是否完整;
errorProvider2 控件用于判断“再次输入密码”对应的textBox2控件文本框中的字符串是否与textBox2控件文本框中的内容相同。
在textBox1_TextChanged事件中,首先判断 textBox1控件的文本框中字符串的个数为5~8,如果未满足条件,则激活errorProvider1控件中,调用错误图标。如果满足条件,调用正确图标。
在textBox3_TextChanged事件中,判断textBox3控件文本框中的字符串是否与textBox2控件文本框相同,如果未满足条件,则激活errorProvider2控件,调用错误图标;否则 调用正确图标。
完整代码:
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 WindowsFormsApp1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
//判断textBox1控件的文本框中字符串的个数
if(textBox1.Text.Length<5||textBox1.Text.Length>8)
{
//如果字符串个数未满足要求,则激活errorProvider1控件
errorProvider1.SetError(textBox1, "用户名必须为5至8位");
//调用自定义图标
errorProvider1.Icon = new Icon(@"C:\BaiduNetdiskDownload\王牌资源 1: “配套学习与教学”资源库\全书案例源码\ch12\ch12\ico\错误.ico");
}
else
{
errorProvider1.SetError(textBox1, "通过验证");
errorProvider1.Icon = new Icon(@"C:\BaiduNetdiskDownload\王牌资源 1: “配套学习与教学”资源库\全书案例源码\ch12\ch12\ico\正确.ico");
}
}
private void textBox3_TextChanged(object sender, EventArgs e)
{
if(textBox3.Text!=textBox2.Text)
{
errorProvider2.SetError(textBox3, "两次输入的密码不一致");
errorProvider2.Icon = new Icon(@"C:\BaiduNetdiskDownload\王牌资源 1: “配套学习与教学”资源库\全书案例源码\ch12\ch12\ico\错误.ico");
}
else
{
errorProvider2.SetError(textBox2, "通过验证");
errorProvider2.Icon = new Icon(@"C:\BaiduNetdiskDownload\王牌资源 1: “配套学习与教学”资源库\全书案例源码\ch12\ch12\ico\正确.ico");
}
}
}
}
运行结果如下:
使用HelpProvider控件调用帮助文件
HelpProvider控件用于将HTML帮助文件(.btm文件或.chm文件)与Windows应用程序相关联,并且为特定对话框或对话框中的特定控件提供区分上下文的帮助,打开帮助文件到特定部分。如目录、索引或搜索功能的主页。
用户可以通过HelpNamespace属性将帮助文件与HelpProvider组件相关联,然后调用SetShowHelp方法实现当按F1键时,打开指定的帮助文件。
(1)通过属性面板打开帮助文件。
首先在HelpProvider控件的属性面板中,选择HelpNamespace属性并单击...按钮;然后在文件夹中选择help.html文件。接着,在Form1窗体控件的属性面板中,将HelpProvider上的ShowHelp值设置为Ture。
(2)通过程序设置打开帮助文件。
HelpNamespace属性可以设置一个值,该值指定与HelpProvider对象关联的帮助文件名。其语法格式如下:
public virtual string HelpNamespace(get;set;)
SetShowHelp方法用于指定是否显示指定控件的帮助信息。其语法格式如下:
public virtual void SetShowHelp(Control ctl, bool value)
参数ctl用于控制帮助信息的打开或关闭。value值为True时表示显示控件的帮助信息,为False时则相反。
编写程序 ,使用HelpProvider控件调用帮助文件。
在Form1窗体上添加HelpProvider控件
在Form1_Load事件中,声明string类型的变量strPath,用于存放帮助文件的地址;接着,设置helpProvider1控件的HelpNamespace属性,以及帮助文件的路径;最后再设置SetShowHelp方法指定是否显示控件的帮助信息。
完整代码:
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 WindowsFormsApp1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
//设置帮助文件的位置
string strPath = @"C:\BaiduNetdiskDownload\王牌资源 1: “配套学习与教学”资源库\全书案例源码\ch12\ch12\help.htm";
//设置helpProvider1控件的HelpNamespace属性,以及帮助文件的路径
helpProvider1.HelpNamespace = strPath;
//设置SetShowHelp方法指定是否显示控件的帮助信息
helpProvider1.SetShowHelp(this, true);
}
}
}
运行结果失败。搞不清楚。
使用Timer控件设置时间间隔
Timer控件是定期引发事件的控件,时间间隔的长度由Interval属性定义,其值以毫秒为单位。若启用了该组件,则每个时间间隔引发一个Tick事件。
设置Timer控件的属性有以下两种方式。
(1)通过属性面板设置Interval和Enabled属性值。
注意:只有将Enabled的值改为True,才可以引发事件。
(2)通过编写代码设置Interval和Enabled属性值。
Interval属性用于设置计时器开始计时的时间间隔。语法格式如下:
public int Interval { get; set; }
当指定的计时间间隔已过去,而且计时器处于启用状态时会引发控件的Tick事件。Enabled属性用于设置是否启用计时器。语法格式如下:
public virtual bool Enabled { get; set; }
如果计时器当前处于启用状态,则为True;否则为False。默认为False。
编写程序,使用Timer控件制作一个流水灯
在Form1窗体中添加Timer控件
添加两个Label控件,label1控件存放符号“◁●○◀”,label2控件命名为“获取当前时间:”;
textBox1控件用于显示当前时间
添加button控件
写完代码之后:
完整代码:
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 WindowsFormsApp1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
//设置Interval属性为200毫秒
timer1.Interval = 200;
}
private void timer1_Tick(object sender, EventArgs e)
{
//获取系统当前的时间
textBox1.Text = DateTime.Now.ToString();
//截取第一位的字符串,放到最后一位,循环往复
label1.Text = label1.Text.Substring(1) + label1.Text.Substring(0, 1);
}
private void button1_Click(object sender, EventArgs e)
{
if(button1.Text=="开始") //判断 按钮的Text属性是否为“开始”
{
timer1.Enabled = true; //启动timer1控件
button1.Text = "暂停"; //设置按钮的Text属性为“暂停”
}
else
{
timer1.Enabled=false;
button1.Text = "开始"; //设置按钮的Text属性为“开始”
}
}
}
}
运行结果效果不太好。窗体重新设计
运行结果:
使用ProgressBar控件程序运行进度条
ProgressBar控件通过在水平条中显示相应数目的矩形来指示操作的进度。操作完成时,进度栏被填满。进度栏通常用于帮助用户了解等待项长时间的操作完成所需的时间。
ProgressBar控件的主要属性有Value、Step、Minimum和Maximum,作用如下。
(1)Minimum和Maximun属性设置进度栏可以显示的最大值和最小值。
(2)Value属性表示操作
(3)Step属性用于指定Value属性递增的值
除直接设置Value属性修改ProgressBar控件显示的值外,还可以使用Increment方法来指定Value属性递增的值。
ProgressBar的一个重要的方法是PerformStep方法,主要用于以Step属性指定Value值进行递增,其结果作用当前进度值。
编程程序,使用ProgressBar控件制作进度条。
添加ProgressBar控件
添加button
写代码:
完整代码:
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 WindowsFormsApp1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
//设置progressBar1控件的Maximun值为2000
progressBar1.Maximum = 2000;
//设置progressBar1控件的Minumum值为0
progressBar1.Minimum = 0;
}
private void timer1_Tick(object sender, EventArgs e)
{
//使用PerformStep按Step值递增
progressBar1.PerformStep();
}
private void button1_Click(object sender, EventArgs e)
{
if (button1.Text =="下载")
{
timer1.Enabled = true;
button1.Text = "暂停";
}
else
{
timer1.Enabled= false;
button1.Text = "下载";
}
}
}
}
在Form1_Load事件中,对Maximum和Minimum属性进行设置;然后在timer1_Tick事件中,使用PerformStep方法按Step值递增;最后在button1_Click事件中,判断 timer1控件是否启动。
运行结果如下: