【WinForm详细教程三】WinForm中的NumericUpDown、PictureBox、RichTextBox及三种Timer控件

本文主要是介绍【WinForm详细教程三】WinForm中的NumericUpDown、PictureBox、RichTextBox及三种Timer控件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • 1. NumericUpDown
    • 2. PictureBox
    • 3.RichTextBox控件
    • 4. Timer 、System.Timers.Timer和System.Threading.Timer 计时器
      • 4.1 Timer
      • 4.2 System.Timers.Timer
      • 4.3 System.Threading.Timer

1. NumericUpDown

NumericUpDown 控件是一个用于数字输入和显示的控件,通常用于让用户选择数字值。它包括一个文本框,用于显示当前的数值,以及向上和向下的按钮,用户可以点击这些按钮来增加或减少数值。这种控件在需要用户输入数量、年龄、数量等数据时非常有用。

属性:

NumericUpDown 控件具有许多属性,以下是其中一些常用的属性:

  • Value:用于获取或设置 NumericUpDown 控件当前显示的数值。
  • Minimum:指定允许输入的最小值。
  • Maximum:指定允许输入的最大值。
  • Increment:指定在按向上或向下按钮时数值的增加或减少幅度。
  • DecimalPlaces:指定小数点后的位数,如果需要输入小数。
  • ThousandsSeparator:如果设置为 true,将在数值中插入千位分隔符。

方法:

NumericUpDown 控件提供了一些方法来操作控件的行为,其中两个常见的方法是:

  • UpButton():模拟用户点击向上按钮,增加数值。
  • DownButton():模拟用户点击向下按钮,减少数值。

事件:

  • ValueChanged:当 NumericUpDown 控件的值发生变化时触发的事件。你可以将事件处理程序与此事件关联,以在数值发生变化时执行特定操作。

案例:

public partial class FrmNumericUpDown : Form
{public FrmNumericUpDown(){InitializeComponent();}private void FrmNumericUpDown_Load(object sender, EventArgs e){// 设置 NumericUpDown 控件的位置和大小//numericUpDown1.Location = new Point(50, 50);//numericUpDown1.Size = new Size(120, 30);// 设置允许输入的最小值和最大值numericUpDown1.Minimum = 0;numericUpDown1.Maximum = 100;// 设置增量值为1numericUpDown1.Increment = 1;// 设置小数点后的位数为0numericUpDown1.DecimalPlaces = 0;}private void btnSubtraction_Click(object sender, EventArgs e){numericUpDown1.DownButton();}private void btnAdd_Click(object sender, EventArgs e){numericUpDown1.UpButton();}private void numericUpDown1_ValueChanged(object sender, EventArgs e){textBox1.Text = numericUpDown1.Value.ToString();}
}

在这里插入图片描述

2. PictureBox

PictureBox 控件是一个图像控件,用于在 Windows 窗体中显示图像。它是一个非常常见的用于显示图形元素的控件,可以用来展示图片、图标、位图等各种图像。

属性:

  • Image:用于设置或获取 PictureBox 控件中显示的图像。你可以通过代码加载图像文件或将图像直接分配给此属性来显示图像。
  • ImageLocation:这是一个字符串属性,用于指定要在PictureBox中显示的图像文件的路径。当你设置了 ImageLocation 属性时,它会自动加载和显示指定路径的图像。
  • SizeMode:SizeMode 属性用于控制图像在 PictureBox 中的显示方式。常见的选项包括:
    • Normal:图像将按其原始尺寸显示,可能会超出 PictureBox 控件的边界。
    • StretchImage:图像将被拉伸以填充整个 PictureBox 控件。
    • AutoSize:PictureBox 控件将自动调整大小以适应图像的尺寸。
    • CenterImage:图像将在PictureBox控件的中心显示,保持原始尺寸。
    • Zoom:图像将被缩放以填充 PictureBox 控件,但保持原始比例。

事件:

  • Click:当用户单击 PictureBox 控件时触发的事件。你可以将事件处理程序与此事件关联,以在用户点击图像时执行特定操作。

案例:

 public partial class frmPictureBox : Form{public frmPictureBox(){InitializeComponent();}private void pictureBox1_Click(object sender, EventArgs e){MessageBox.Show("用户单击了图像!");}private void frmPictureBox_Load(object sender, EventArgs e){// 设置 PictureBox 控件的位置和大小pictureBox1.Location = new Point(50, 50);pictureBox1.Size = new Size(200, 150);// 指定要显示的图像文件的路径pictureBox1.ImageLocation = "C:\\Users\\24576\\Pictures\\Microsoft.Windows.Photos_8wekyb3d8bbwe!App\\111.jpg";// 设置图像显示模式为拉伸以填充整个 PictureBox 控件pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;}}

image-20231025221311835

3.RichTextBox控件

RichTextBox 控件是一个富文本编辑控件,它允许用户输入和编辑文本,并支持丰富的文本格式化选项,如字体、颜色、样式等。用户可以在 RichTextBox 中创建粗体、斜体、下划线文本,插入图片,创建超链接等。这使得 RichTextBox 在需要富文本编辑功能的应用程序中非常有用,如文档编辑器、聊天应用程序等。

常用属性:

RichTextBox 控件具有许多属性,以下是一些常用的属性:

  • Text:获取或设置 RichTextBox 中的文本内容。
  • SelectionFont:获取或设置当前所选文本的字体。
  • SelectionColor:获取或设置当前所选文本的颜色。
  • SelectionAlignment:获取或设置当前所选文本的对齐方式(左对齐、居中、右对齐等)。
  • SelectionBullet:获取或设置当前所选文本是否带有项目符号(如圆点)。
  • DetectUrls:指示是否自动检测文本中的 URL 并创建超链接。

方法:

RichTextBox 控件提供了一些方法来操作文本和控件的行为,以下是一些常用的方法:

  • Find:用于搜索并定位文本中的指定字符串,并可选地指定搜索的起始位置和搜索选项。
  • SaveFile:用于将 RichTextBox 中的内容保存到文件中。
  • LoadFile:用于从文件中加载文本内容到 RichTextBox 控件中。

事件:

RichTextBox 控件定义了一些事件,以下是一些常用的事件:

  • TextChanged:当 RichTextBox 中的文本内容发生变化时触发的事件。你可以将事件处理程序与此事件关联,以在文本发生变化时执行特定操作。
  • SelectionChanged:当用户更改选择文本时触发的事件。
  • LinkClicked:当用户点击超链接时触发的事件。这通常用于在应用程序中处理链接的导航。

案例:

 public partial class frmRichTextBox : Form{public frmRichTextBox(){InitializeComponent();}private void frmRichTextBox_Load(object sender, EventArgs e){// 向 RichTextBox 中插入富文本内容richTextBox1.AppendText("这是一段富文本示例。\n");richTextBox1.SelectionFont = new Font("Arial", 12, FontStyle.Bold);richTextBox1.SelectionColor = Color.Blue;richTextBox1.AppendText("这是粗体蓝色文本。\n");// 添加一个超链接richTextBox1.AppendText("访问我的网站:");richTextBox1.SelectionFont = new Font("Arial", 12, FontStyle.Underline);richTextBox1.SelectionColor = Color.Blue;richTextBox1.AppendText("https://www.baidu.com\n");Clipboard.Clear(); //剪贴板清空Image bmp = Image.FromFile(@"C:\\Users\\24576\\Pictures\\Microsoft.Windows.Photos_8wekyb3d8bbwe!App\\111.jpg");Clipboard.SetImage(bmp);richTextBox1.Paste();//将剪贴板中的图片粘贴到控件中}private void richTextBox1_LinkClicked(object sender, LinkClickedEventArgs e){//启动进程,将资源与新的Process相关联System.Diagnostics.Process.Start(e.LinkText);}}其它一些用法
//richTextBox1.LoadFile(@"d:\course.txt", RichTextBoxStreamType.PlainText);//加载文件到控件中
//richTextBox1.SaveFile(@"d:\courseNew.rtf"); //保存文件
//richTextBox1.SelectionAlignment = HorizontalAlignment.Center; //居中
//richTextBox1.SelectionFont = newFont;//设置选定内容或插入点的字体

在这里插入图片描述

4. Timer 、System.Timers.Timer和System.Threading.Timer 计时器

4.1 Timer

  • 作用:主要用于在Windows应用程序中执行定时任务,每隔指定的间隔时间就会引发一个事件。
  • 线程模型:它运行在UI线程中,因此可以直接修改UI元素。
  • 属性
    • Interval:设置时间间隔,单位为毫秒(ms),例如,1000ms表示1秒。
  • 事件
    • Tick:每当达到设定的时间间隔后触发。
  • 应用场景
    • 动态时间显示
    • 动画
    • 自动更新UI等
  • 性能考虑
    • 如果单次执行时间超过间隔时间,会影响下次触发。
    • 精度较差,不适用于需要高精度计时的场景。

代码示例:

public partial class frmTimer : Form
{public frmTimer(){InitializeComponent();}private void frmTimer_Load(object sender, EventArgs e){label1.Text = DateTime.Now.ToString();timer1.Enabled = true;}private void timer1_Tick(object sender, EventArgs e){label1.Text = "当前的时间是:" + DateTime.Now.ToString();}
}

在这里插入图片描述

4.2 System.Timers.Timer

System.Timers.Timer 是一种基于服务的计时器,用于在指定的时间间隔触发 Elapsed 事件并执行操作。它是一个轻量级的计时器,适用于在后台执行一些定时任务。

特点:

  • System.Timers.Timer 是基于服务的计时器,因此它不依赖于 UI 线程,可以在后台执行操作。
  • 它的时间间隔可以设置,当达到指定的时间间隔时,会触发 Elapsed 事件。
  • System.Timers.Timer 不可以直接修改 UI 元素,因为它不是由 UI 线程执行的。
  • 若要在 System.Timers.Timer 中修改 UI 元素,可以使用 UI 元素的 Invoke 方法或委托来进行操作。
  • System.Timers.Timer 执行的操作是耗时的,但不会导致 UI 失去响应,也不会影响下一次的触发。

常用属性:

  • Interval:获取或设置计时器的时间间隔(以毫秒为单位)。
  • Enabled:获取或设置一个值,指示计时器是否可用。

常用方法:

  • Start():启动计时器,使其开始计时。
  • Stop():停止计时器,使其停止计时。

常用事件:

  • Elapsed:在计时器间隔时间到达后触发的事件。可以订阅此事件来执行所需的操作。

代码示例:

public partial class frmTimersTimer : Form
{public frmTimersTimer(){InitializeComponent();}private void frmTimersTimer_Load(object sender, EventArgs e){System.Timers.Timer timer = new System.Timers.Timer();timer.Interval = 1000;//timer3.AutoReset = false;//只会引发一次,就停止了timer.Elapsed += Timer_Elapsed; //注册事件timer.Start();}int count = 0;private void Timer_Elapsed(object sender, ElapsedEventArgs e){// 在委托中修改 UI 元素Invoke((Action)(() =>{// 修改 UI 元素label1.Text = "当前时间是:" + DateTime.Now.ToString();}));count += 1;if (count > 10){System.Timers.Timer timer = (System.Timers.Timer)sender;timer.Stop();}}
}

在这里插入图片描述

4.3 System.Threading.Timer

System.Threading.Timer 是一个多线程计时器,提供了以指定的时间间隔对线程池线程执行方法的机制。它是一种轻量级的计时器,并具有高精度的特性。

特点:

  • System.Threading.Timer 提供了一种在指定的时间间隔内执行方法的机制,它使用线程池线程来执行操作。
  • 即使回调方法的执行时间超过了指定的时间间隔,也不会影响下一次的触发,因为 System.Threading.Timer 是基于时间的触发,而不是等待上一次回调方法执行完成。
  • System.Threading.Timer 不是由 UI 线程上运行的,因此不可以直接修改 UI 元素。
  • 若要在 System.Threading.Timer 中修改 UI 元素,可以使用 UI 元素的 Invoke 方法来实现跨线程访问 UI 元素。

常用属性:

  • DueTime:获取或设置计时器首次触发的延迟时间(以毫秒为单位)。
  • Period:获取或设置计时器触发的时间间隔(以毫秒为单位)。

常用方法:

  • Change(int dueTime, int period):更改计时器的触发时间和时间间隔。
  • Dispose():释放计时器使用的资源并停止计时器。

代码示例:

    public frmThreadingTimer(){InitializeComponent();}int count = 0;System.Threading.Timer threadTimer;private void frmThreadingTimer_Load(object sender, EventArgs e){//多线程//period  时间间隔  0或-1 只会执行一 次,然后就停止//Change 可以让计时器重新启动//停止 period  0 -1   timer4.Dispose() threadTimer = new System.Threading.Timer(new System.Threading.TimerCallback(oo => {count += 1;Action<int> act = ChangeCount; //注册一个委托this.Invoke(act, count);}), null, 0, 1000);//第一个位置是一个回调函数//threadTimer.Change(2000, 2000);//改变延迟启动时间和时间间隔}private void ChangeCount(int count){label1.Text = count.ToString();label2.Text = (count * 2).ToString();if (count > 10)threadTimer.Dispose();//计算十次后自动停止}
}

在这里插入图片描述

【WinForm详细教程二】WinForm中的ComboBox、CheckedListBox、DateTimePicker和MonthCalender、MaskedTextBox控件
【WinForm详细教程一】WinForm中的窗体、Label、TextBox及Button控件、RadioButton和CheckBox、ListBox

【C#进阶】C#语法中一些常用知识点总结
希望有所帮助,同时欢迎关注我,后面将更新更多相关内容!

这篇关于【WinForm详细教程三】WinForm中的NumericUpDown、PictureBox、RichTextBox及三种Timer控件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/302937

相关文章

Vue项目的甘特图组件之dhtmlx-gantt使用教程和实现效果展示(推荐)

《Vue项目的甘特图组件之dhtmlx-gantt使用教程和实现效果展示(推荐)》文章介绍了如何使用dhtmlx-gantt组件来实现公司的甘特图需求,并提供了一个简单的Vue组件示例,文章还分享了一... 目录一、首先 npm 安装插件二、创建一个vue组件三、业务页面内 引用自定义组件:四、dhtmlx

MySQL zip安装包配置教程

《MySQLzip安装包配置教程》这篇文章详细介绍了如何使用zip安装包在Windows11上安装MySQL8.0,包括下载、解压、配置环境变量、初始化数据库、安装服务以及更改密码等步骤,感兴趣的朋... 目录mysql zip安装包配置教程1、下载zip安装包:2、安装2.1 解压zip包到安装目录2.2

Java集合中的List超详细讲解

《Java集合中的List超详细讲解》本文详细介绍了Java集合框架中的List接口,包括其在集合中的位置、继承体系、常用操作和代码示例,以及不同实现类(如ArrayList、LinkedList和V... 目录一,List的继承体系二,List的常用操作及代码示例1,创建List实例2,增加元素3,访问元

Java使用Tesseract-OCR实战教程

《Java使用Tesseract-OCR实战教程》本文介绍了如何在Java中使用Tesseract-OCR进行文本提取,包括Tesseract-OCR的安装、中文训练库的配置、依赖库的引入以及具体的代... 目录Java使用Tesseract-OCRTesseract-OCR安装配置中文训练库引入依赖代码实

SpringBoot整合easy-es的详细过程

《SpringBoot整合easy-es的详细过程》本文介绍了EasyES,一个基于Elasticsearch的ORM框架,旨在简化开发流程并提高效率,EasyES支持SpringBoot框架,并提供... 目录一、easy-es简介二、实现基于Spring Boot框架的应用程序代码1.添加相关依赖2.添

Java调用DeepSeek API的最佳实践及详细代码示例

《Java调用DeepSeekAPI的最佳实践及详细代码示例》:本文主要介绍如何使用Java调用DeepSeekAPI,包括获取API密钥、添加HTTP客户端依赖、创建HTTP请求、处理响应、... 目录1. 获取API密钥2. 添加HTTP客户端依赖3. 创建HTTP请求4. 处理响应5. 错误处理6.

Spring AI集成DeepSeek的详细步骤

《SpringAI集成DeepSeek的详细步骤》DeepSeek作为一款卓越的国产AI模型,越来越多的公司考虑在自己的应用中集成,对于Java应用来说,我们可以借助SpringAI集成DeepSe... 目录DeepSeek 介绍Spring AI 是什么?1、环境准备2、构建项目2.1、pom依赖2.2

Goland debug失效详细解决步骤(合集)

《Golanddebug失效详细解决步骤(合集)》今天用Goland开发时,打断点,以debug方式运行,发现程序并没有断住,程序跳过了断点,直接运行结束,网上搜寻了大量文章,最后得以解决,特此在这... 目录Bug:Goland debug失效详细解决步骤【合集】情况一:Go或Goland架构不对情况二:

Ubuntu固定虚拟机ip地址的方法教程

《Ubuntu固定虚拟机ip地址的方法教程》本文详细介绍了如何在Ubuntu虚拟机中固定IP地址,包括检查和编辑`/etc/apt/sources.list`文件、更新网络配置文件以及使用Networ... 1、由于虚拟机网络是桥接,所以ip地址会不停地变化,接下来我们就讲述ip如何固定 2、如果apt安

Python itertools中accumulate函数用法及使用运用详细讲解

《Pythonitertools中accumulate函数用法及使用运用详细讲解》:本文主要介绍Python的itertools库中的accumulate函数,该函数可以计算累积和或通过指定函数... 目录1.1前言:1.2定义:1.3衍生用法:1.3Leetcode的实际运用:总结 1.1前言:本文将详