博客
关于我
C#成魔之路<2>Windows 应用程序高级控件(2)
阅读量:355 次
发布时间:2019-03-04

本文共 4195 字,大约阅读时间需要 13 分钟。

DateTimePicker控件是用于选择日期和时间的常用控件,它允许用户单独选择一个时间点或直接输入日期和时间值。该控件的主要特点是显示为下拉列表和网格形式,方便用户快速选择或输入时间信息。

DateTimePicker控件的使用

显示时间

DateTimePicker控件支持通过设置Format属性来选择显示格式。例如,设置Format为Time,可以让控件仅显示时间部分。此属性的默认值为Long,表示以用户操作系统设置的长日期格式显示日期时间。

public DateTimePickerFormat Format { get; set; }

DateTimePickerFormat枚举类型支持以下值:

  • Custom:自定义格式
  • Long:用户操作系统设置的长日期格式
  • Short:用户操作系统设置的短日期格式
  • Time:用户操作系统设置的时间格式

自定义日期格式

如果需要自定义日期和时间的显示格式,可以通过CustomFormat属性来设置。该属性的值是一个字符串,按照指定的格式规则来显示日期和时间。

public string CustomFormat { get; set; }

有效的自定义格式字符串包括:

  • d:一位或两位数字表示天数
  • dd:两位数字,天数前面补零
  • ddd:星期几的缩写形式(如Sun、Mon)
  • dddd:星期几的全称形式(如Sunday、Monday)
  • hhh:12小时格式的小时数
  • HHH:24小时格式的小时数
  • mmm:分钟数
  • MMM:月份表示
  • sss:秒数
  • ttt:AM/PM的缩写
  • yyyyyy:年份表示
  • ::时间分隔符

获取日期值

要获取DateTimePicker控件中的日期值,可以通过以下方式:

  • Text属性:返回与控件格式一致的字符串值
  • Value属性:返回DateTime对象
  • 使用YearMonthDay等方法获取具体日期部分

其他高级控件

ErrorProvider控件

ErrorProvider控件用于在用户输入错误时显示提示信息。它可以在不打扰用户的情况下显示错误提示。

public void SetError(Control control, string value)

通过在Validating事件中调用SetError方法,可以为特定控件设置错误描述。例如,在文本框验证失败时,显示错误提示。

HelpProvider控件

HelpProvider控件用于与帮助文件(如HTML或CHM文件)关联,为特定控件提供帮助信息。当用户按下F1时,会打开指定的帮助文件。

public string HelpNamespace { get; set; }public void SetShowHelp(Control ctl, bool value)

通过设置HelpNamespace属性和调用SetShowHelp方法,可以实现帮助文件的显示。

Timer控件

Timer控件用于在定期间隔时间后引发事件。它的Interval属性定义时间间隔(毫秒),Enabled属性控制是否启用计时器。

public int Interval { get; set; }public bool Enabled { get; set; }

ProgressBar控件

ProgressBar控件用于显示程序运行的进度。它的Value属性表示当前完成的进度,Minimum和Maximum属性定义范围,Step属性指定递增值大小。通过PerformStep方法可以递增进度值。

public int Value { get; set; }public int Minimum { get; set; }public int Maximum { get; set; }public int Step { get; set; }public void PerformStep()

示例程序

DateTimePicker自定义格式

public partial class Form1 : Form{    public Form1()    {        InitializeComponent();    }    private void Form1_Load(object sender, EventArgs e)    {        dateTimePicker1.Format = DateTimePickerFormat.Custom;        dateTimePicker1.CustomFormat = "MMMM dd, yyyy-dddd";    }}

ErrorProvider验证

public partial class Form1 : Form{    private bool isError = true;    public Form1()    {        InitializeComponent();    }    private void textBox3_TextChanged(object sender, EventArgs e)    {        if (textBox3.Text != textBox2.Text)        {            errorProvider1.SetError(textBox3, "the same");            isError = false;        }    }    private void textBox1_TextChanged(object sender, EventArgs e)    {        if (!Regex.IsMatch(textBox1.Text, "^[\u4e00-\u9fa5]{2,}$"))        {            errorProvider1.SetError(textBox1, "you must do this");            isError = false;        }    }}

Timer实现

public partial class Form1 : Form{    private Timer timer1;    private Timer timer2;    public Form1()    {        InitializeComponent();        timer1 = new Timer();        timer2 = new Timer();        timer1.Interval = 1000;        timer2.Interval = 1000;        timer1.Enabled = false;        timer2.Enabled = false;    }    private void timer1_Tick(object sender, EventArgs e)    {        Rectangle rect = Screen.GetWorkingArea(this);        if (this.Left != rect.Width - this.Width)        {            this.Left++;            this.Top += 1;        }        else        {            timer1.Enabled = false;            timer2.Enabled = true;        }    }    private void timer2_Tick(object sender, EventArgs e)    {        Rectangle rect = Screen.GetWorkingArea(this);        if (this.Left == 0)        {            timer1.Enabled = true;            timer2.Enabled = false;        }        else        {            this.Left--;            this.Top -= 1;        }    }}

ProgressBar显示进度

public partial class Form1 : Form{    public Form1()    {        InitializeComponent();    }    private void Form1_Load(object sender, EventArgs e)    {        progressBar1.Value = 0;    }    private void timer1_Tick(object sender, EventArgs e)    {        if (progressBar1.Value == progressBar1.Maximum)        {            progressBar1.Value = progressBar1.Minimum;        }        else        {            progressBar1.PerformStep();        }        label1.Text = (progressBar1.Value - progressBar1.Minimum * 100 /                      (progressBar1.Maximum - progressBar1.Minimum)).ToString() + "%";    }}

通过以上方法,可以有效地使用这些高级控件来提升应用程序的用户体验和功能。

转载地址:http://lysr.baihongyu.com/

你可能感兴趣的文章
python 反射机制
查看>>
python 启动提示IDLE's subprocess didn't make conne...
查看>>
python 命令接口_实现“[命令][操作][参数]”样式的命令行接口?
查看>>
Python 和 OpenCV.如何检测图像中的所有(填充)圆形/圆形对象?
查看>>
Python 和 RabbitMQ - 聆听来自多个渠道的消费事件的最佳方式?
查看>>
python编辑器打不开_关于命令ride.py打不开RF,而是打开pycharm编辑器问题解决思路...
查看>>
python编译exe同时支持32位_第三周:同时管理64位和32位版本的Python,并用Pyinstaller打包成exe...
查看>>
Python 和Java 哪个更适合做自动化测试?
查看>>
Python编程:掌握高级语言程序设计。从零基础到精通,收藏这篇就够了!
查看>>
python 图片转ico
查看>>
python 图片转文字、语音转文字、文字转语音保存音频并朗读
查看>>
python 在包含类似字符\x16、\x12、\x某某的数组中将以\x开头的字符找出来的方法
查看>>
Python 在并行进程之间共享字典
查看>>
Python 垃圾收集器文档
查看>>
python 基于 wordcloud + jieba + matplotlib 生成词云
查看>>
python 基于detectron或mask_rcnn的mask遮罩区域进行图片截取
查看>>
Python编程:Tkinter图形界面设计(2)
查看>>
Python 基础 - Day 5 Learning Note - 模块 之 标准库:time (1)
查看>>
Python 基础一
查看>>
python 基础操作知识整理总结
查看>>