WPF篇(9)-CheckBox复选框+RadioButton单选框+RepeatButton重复按钮
CheckBox复选框
CheckBox继承于ToggleButton,而ToggleButton继承于ButtonBase基类。
案例
前端代码
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center"><TextBlock Text="今晚吃什么菜?" Margin="5"/><CheckBox Name="_checkbox1" Content="红烧牛肉" Margin="5"/><CheckBox Name="_checkbox2" Content="麻婆豆腐" Margin="5"/><CheckBox Name="_checkbox3" Content="夫妻肺片" Margin="5"/><Button x:Name="_button" Content="查看菜单" Click="_button_Click"/></StackPanel>
后端代码
private void _button_Click(object sender, RoutedEventArgs e){string order = string.Empty;if (_checkbox1.IsChecked == true)order += _checkbox1.Content + ",";if (_checkbox2.IsChecked == true)order += _checkbox2.Content + ",";if (_checkbox3.IsChecked == true)order += _checkbox3.Content;if(!string.IsNullOrEmpty(order))MessageBox.Show(order);}

我们通过判断CheckBox的IsChecked属性,来获取前端用户的选择。
RadioButton单选框
RadioButton也继承于ToggleButton,作用是单项选择,所以被称为单选框。
要注意:
这个控件有一个重要属性叫GroupName——分组名称。默认值是一个空字符串。用来指定哪些RadioButton之间是互相排斥的。
案例
前端代码
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center"><TextBlock Text="今晚吃什么菜?" Margin="5"/><RadioButton Name="_RadioButton1" Content="红烧牛肉" Margin="5"/><RadioButton Name="_RadioButton2" Content="麻婆豆腐" Margin="5"/><RadioButton Name="_RadioButton3" Content="夫妻肺片" Margin="5"/><Button x:Name="_button" Content="查看菜单" Click="_button_Click"/></StackPanel>
后端代码
private void _button_Click(object sender, RoutedEventArgs e){string order = string.Empty;if (_RadioButton1.IsChecked == true)order += _RadioButton1.Content + ",";if (_RadioButton2.IsChecked == true)order += _RadioButton2.Content + ",";if (_RadioButton3.IsChecked == true)order += _RadioButton3.Content;if(!string.IsNullOrEmpty(order))MessageBox.Show(order);}

这时候我们发现无论怎么选就只能选一个。如果我们要求必须选择一荤一素怎么办?我们看看组的使用。
前端代码
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center"><TextBlock Text="今晚吃什么菜?" Margin="5"/><RadioButton Name="_RadioButton1" Content="红烧牛肉" GroupName="荤菜" Margin="5"/><RadioButton Name="_RadioButton2" Content="糖醋排骨" GroupName="荤菜" Margin="5"/><RadioButton Name="_RadioButton3" Content="麻婆豆腐" GroupName="素菜" Margin="5"/><RadioButton Name="_RadioButton4" Content="清炒时蔬" GroupName="素菜" Margin="5"/><Button x:Name="_button" Content="查看菜单" Click="_button_Click"/></StackPanel>
后端代码
private void _button_Click(object sender, RoutedEventArgs e)
{string order = string.Empty;if (_RadioButton1.IsChecked == true)order += _RadioButton1.Content + ",";if (_RadioButton2.IsChecked == true)order += _RadioButton2.Content + ",";if (_RadioButton3.IsChecked == true)order += _RadioButton3.Content + ",";if (_RadioButton4.IsChecked == true)order += _RadioButton4.Content;if (!string.IsNullOrEmpty(order))MessageBox.Show(order);
}

此时再操作时我们发现,红烧牛肉和糖醋排骨只能二选一,麻婆豆腐和清炒时蔬也只能二选一。
RepeatButton重复按钮
RepeatButton,顾名思义,重复执行的按钮。就是当按钮被按下时,所订阅的回调函数会不断被执行。那么,多长时间执行一次?
我们先看看它的结构定义:
public class RepeatButton : ButtonBase
{public static readonly DependencyProperty DelayProperty;public static readonly DependencyProperty IntervalProperty;public RepeatButton();public int Delay { get; set; }public int Interval { get; set; }protected override void OnClick();protected override AutomationPeer OnCreateAutomationPeer();protected override void OnKeyDown(KeyEventArgs e);protected override void OnKeyUp(KeyEventArgs e);protected override void OnLostMouseCapture(MouseEventArgs e);protected override void OnMouseEnter(MouseEventArgs e);protected override void OnMouseLeave(MouseEventArgs e);protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e);protected override void OnMouseLeftButtonUp(MouseButtonEventArgs e);}
1. 属性分析
RepeatButton 自身提供了两个整型属性,分别是Delay 和Interval 。
- Delay 属性:表示延时重复执行的毫秒数,就是说,RepeatButton被按下后会立即执行一次回调函数,如果您不松开鼠标,在等待Delay 毫秒后,就开始进行重复执行阶段。
- Interval 属性:表示重复执行回调函数的时间间隔毫秒数。
2. RepeatButton 应用示例
前端代码
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center"><TextBlock Text="食用油准备好" Margin="5 7 5 5"/><RepeatButton Name="_Button1" Content="开始倒油" Delay="1000" Interval="500" Click="_Button1_Click" Margin="5"/></StackPanel>
后端代码
public partial class MainWindow{public MainWindow(){InitializeComponent();}int count = 1;private void _Button1_Click(object sender, RoutedEventArgs e){Console.WriteLine($"重复时间:{DateTime.Now.ToLongTimeString()} {DateTime.Now.Millisecond},重复次数:{count++}");}}

结果显示,第一次和第二次输出时间刚好为1000毫秒,也就是Delay属性在起作用。然后,从第2次开始,每两次之间的时间间隔大约为500毫秒,这是因为Interval属性被设置为500。
相关文章:
WPF篇(9)-CheckBox复选框+RadioButton单选框+RepeatButton重复按钮
CheckBox复选框 CheckBox继承于ToggleButton,而ToggleButton继承于ButtonBase基类。 案例 前端代码 <StackPanel Orientation"Horizontal" HorizontalAlignment"Center" VerticalAlignment"Center"><TextBlock Text"…...
【机器学习基础】线性回归
【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈Python机器学习 ⌋ ⌋ ⌋ 机器学习是一门人工智能的分支学科,通过算法和模型让计算机从数据中学习,进行模型训练和优化,做出预测、分类和决策支持。Python成为机器学习的首选语言,…...
java基础概念12-二维数组
一、二维数组的定义 二维数组可以被视为数组的数组,即每个元素都是一个数组。 二维数组的应用场景: 当我们需要把数据分组管理的时候,就需要用到二维数组。 二、二维数组的初始化 2-1、静态初始化 阿里巴巴规范手册: // 静态初始…...
56 锐键交换机开局
锐键交换机开局 一 锐键视图切换 1 Ruijie> 用户视图 2 Ruijie# 特权模式 3 Ruijie(config)# 全局配置模式 4 Ruijie(config-if-GigabitEthernet 1/1/1)# 接口配置模式 5 Ruijie(config)#show vlan 6 exit (退出) 7 enable(进入)...
VR虚拟展厅与传统实体展厅相比,有哪些优势?
视创云展虚拟展厅相比传统的实体展厅具有多方面的优势,主要体现在以下几个方面: 1、降低成本: 虚拟展厅无需租赁或建设物理空间,减少了场地、装修和维护等方面的开支。同时,参观者和参展商无需现场参观或布展&#x…...
Vue的事件处理、事件修饰符、键盘事件
目录 1. 事件处理基本使用2. 事件修饰符3. 键盘事件 1. 事件处理基本使用 使用v-on:xxx或xxx绑定事件,其中xxx是事件名,比如clickmethods中配置的函数,都是被Vue所管理的函数,this的指向是vm或组件实例对象 <!DOCTYPE html&g…...
c++单例实践
C单例实践 在日常开发中,虽然太多的单例调用会让代码的耦合度变高,但是例如日志类这种,单例模式就变得非常有。所以这篇文章为大家介绍static 关键字相关知识以及如何实现自己的C单例类。 static关键字 首先让我们请出今天的主角: static。…...
SQL注入实例(sqli-labs/less-9)
0、初始页面 1、爆库名 使用python脚本 def inject_database1(url):name for i in range(1, 20):low 32high 128mid (low high) // 2while low < high:payload "1 and if(ascii(substr(database(),%d,1)) > %d ,sleep(2),0)-- " % (i, mid)res {"…...
http不同类型方法的作用,get和post区别
在HTTP协议中,不同的请求方法用于不同的操作。常见的HTTP方法包括GET、POST、PUT、DELETE、HEAD、OPTIONS、PATCH等,每种方法有其特定的作用。 常见的HTTP方法及其作用 1. GET - **作用**: 从服务器请求指定资源。GET方法通常用于获取数据而不会修改数据…...
# 利刃出鞘_Tomcat 核心原理解析(二)
利刃出鞘_Tomcat 核心原理解析(二) 一、 Tomcat专题 - Tomcat架构 - HTTP工作流程 1、Http 工作原理 HTTP 协议:是浏览器与服务器之间的数据传送协议。作为应用层协议,HTTP 是基于 TCP/IP 协议来传递数据的(HTML文件…...
美团秋招笔试第三题(剪彩带)求助帖
题目描述及代码如下。 我使用模拟打表法,示例通过了,但是提交通过率为0。诚心求教。欢迎补充题目,或者有原题链接更好~。我觉得可能出错的点:int -> long long ?或者一些临界条件。 /* 美团25毕业秋招第三题,做题…...
LeetCode 算法:最小栈 c++
原题链接🔗:最小栈 难度:中等⭐️⭐️ 题目 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。 实现 MinStack 类: MinStack() 初始化堆栈对象。void push(int val) 将元素val推…...
【解压既玩】PS3模拟器v0.0.32+战神3+战神升天+各存档 整合包 ,完美不死机,没有BUG,旷世神作,强力推荐
战神3是圣莫尼卡公司的大作,PS3 上必玩的游戏之一。 本文收集了战神3和升天两作,附存档,完美不死机,没有BUG,强烈推荐。 解压即玩。 立即下载:【chumenx.com】【解压既玩】PS3模拟器v0.0.32战神3战神升天…...
bootstrap- X-editable 行内编辑
前面不要忘记引入editable {field: weigh, title: __(Weigh),editable: {type: text,url: "api/cat/editWeigh",validate: function (v) {if($.trim(v) ) return 值不能为空;if(!$.isNumeric(v)) return 值只能为数字;if(v<0 || v%1!0) return 值必需为正整数;}…...
【LabVIEW学习篇 - 12】:通知器
文章目录 通知器案例一案例二案例三(在不同VI中用同一个通知器) 通知器 同步技术:同步技术用来解决多个并行任务之间的同步或通信问题。 通知器比较适合一对多的操作,类似于广播,一点发出的通知消息, 其它…...
Oracle一对多(一主多备)的DG环境如何进行switchover切换?
本文主要分享Oracle一对多(一主多备)的DG环境的switchover切换,如何进行主从切换,切换后怎么恢复正常同步? 1、环境说明 本文的环境为一主两备,数据库版本为11.2.0.4,主要信息如下: 数据库IPdb_unique_n…...
【浏览器插件】Chrome扩展V3版本
前言:Chrome从2022年6月开始,新发布插件只接受V3版。2024年V2版已从应用商店下架。 浏览器扩展插件开发API文档 chrome官网(要翻墙): https://developer.chrome.com/docs/extensions/mv3 MDN中文:https:/…...
编码器信号干扰问题、编码器选型
系列文章目录 1.元件基础 2.电路设计 3.PCB设计 4.元件焊接 5.板子调试 6.程序设计 7.算法学习 8.编写exe 9.检测标准 10.项目举例 11.职业规划 文章目录 前言一、屏蔽技术1.静电屏蔽:2.低频磁屏蔽:3.电磁屏蔽:4.减少“天线” 二、增量编码器的信号选择三、信号电缆选择四、…...
Unity入门5——材质
创建材质 点击Assets → Create → Material,得到一个默认材质球的副本。 使用材质 直接把材质球拖拽到物体上,或设置mesh renderer组件下的Materials 数组中第一个元素...
C的温故而知新:存储类别、链接和内存管理(C Primer Plus第十二章)
存储类别、链接和内存管理 这一章主要涉及到的是一些偏概念的东西,基本上偏向于自己去理解这部分内容。很好地理解这一章可以更好地控制程序,合理的利用内存存储数据。 C语言提供了多种不同的模型或存储类别在内存中存储数据。作用域有块作用域、函数作…...
基于FPGA的PID算法学习———实现PID比例控制算法
基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容:参考网站: PID算法控制 PID即:Proportional(比例)、Integral(积分&…...
Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!
一、引言 在数据驱动的背景下,知识图谱凭借其高效的信息组织能力,正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合,探讨知识图谱开发的实现细节,帮助读者掌握该技术栈在实际项目中的落地方法。 …...
IT供电系统绝缘监测及故障定位解决方案
随着新能源的快速发展,光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域,IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选,但在长期运行中,例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...
Spring数据访问模块设计
前面我们已经完成了IoC和web模块的设计,聪明的码友立马就知道了,该到数据访问模块了,要不就这俩玩个6啊,查库势在必行,至此,它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据(数据库、No…...
Pinocchio 库详解及其在足式机器人上的应用
Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库,专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性,并提供了一个通用的框架&…...
九天毕昇深度学习平台 | 如何安装库?
pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子: 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...
【从零学习JVM|第三篇】类的生命周期(高频面试题)
前言: 在Java编程中,类的生命周期是指类从被加载到内存中开始,到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期,让读者对此有深刻印象。 目录 …...
[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.
ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #:…...
MySQL 主从同步异常处理
阅读原文:https://www.xiaozaoshu.top/articles/mysql-m-s-update-pk MySQL 做双主,遇到的这个错误: Could not execute Update_rows event on table ... Error_code: 1032是 MySQL 主从复制时的经典错误之一,通常表示ÿ…...
客户案例 | 短视频点播企业海外视频加速与成本优化:MediaPackage+Cloudfront 技术重构实践
01技术背景与业务挑战 某短视频点播企业深耕国内用户市场,但其后台应用系统部署于东南亚印尼 IDC 机房。 随着业务规模扩大,传统架构已较难满足当前企业发展的需求,企业面临着三重挑战: ① 业务:国内用户访问海外服…...
