当前位置: 首页 > news >正文

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&#xff0c;而ToggleButton继承于ButtonBase基类。 案例 前端代码 <StackPanel Orientation"Horizontal" HorizontalAlignment"Center" VerticalAlignment"Center"><TextBlock Text"…...

【机器学习基础】线性回归

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈Python机器学习 ⌋ ⌋ ⌋ 机器学习是一门人工智能的分支学科&#xff0c;通过算法和模型让计算机从数据中学习&#xff0c;进行模型训练和优化&#xff0c;做出预测、分类和决策支持。Python成为机器学习的首选语言&#xff0c;…...

java基础概念12-二维数组

一、二维数组的定义 二维数组可以被视为数组的数组&#xff0c;即每个元素都是一个数组。 二维数组的应用场景&#xff1a; 当我们需要把数据分组管理的时候&#xff0c;就需要用到二维数组。 二、二维数组的初始化 2-1、静态初始化 阿里巴巴规范手册&#xff1a; // 静态初始…...

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虚拟展厅与传统实体展厅相比,有哪些优势?

视创云展虚拟展厅相比传统的实体展厅具有多方面的优势&#xff0c;主要体现在以下几个方面&#xff1a; 1、降低成本&#xff1a; 虚拟展厅无需租赁或建设物理空间&#xff0c;减少了场地、装修和维护等方面的开支。同时&#xff0c;参观者和参展商无需现场参观或布展&#x…...

Vue的事件处理、事件修饰符、键盘事件

目录 1. 事件处理基本使用2. 事件修饰符3. 键盘事件 1. 事件处理基本使用 使用v-on:xxx或xxx绑定事件&#xff0c;其中xxx是事件名&#xff0c;比如clickmethods中配置的函数&#xff0c;都是被Vue所管理的函数&#xff0c;this的指向是vm或组件实例对象 <!DOCTYPE html&g…...

c++单例实践

C单例实践 在日常开发中&#xff0c;虽然太多的单例调用会让代码的耦合度变高&#xff0c;但是例如日志类这种&#xff0c;单例模式就变得非常有。所以这篇文章为大家介绍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协议中&#xff0c;不同的请求方法用于不同的操作。常见的HTTP方法包括GET、POST、PUT、DELETE、HEAD、OPTIONS、PATCH等&#xff0c;每种方法有其特定的作用。 常见的HTTP方法及其作用 1. GET - **作用**: 从服务器请求指定资源。GET方法通常用于获取数据而不会修改数据…...

# 利刃出鞘_Tomcat 核心原理解析(二)

利刃出鞘_Tomcat 核心原理解析&#xff08;二&#xff09; 一、 Tomcat专题 - Tomcat架构 - HTTP工作流程 1、Http 工作原理 HTTP 协议&#xff1a;是浏览器与服务器之间的数据传送协议。作为应用层协议&#xff0c;HTTP 是基于 TCP/IP 协议来传递数据的&#xff08;HTML文件…...

美团秋招笔试第三题(剪彩带)求助帖

题目描述及代码如下。 我使用模拟打表法&#xff0c;示例通过了&#xff0c;但是提交通过率为0。诚心求教。欢迎补充题目&#xff0c;或者有原题链接更好~。我觉得可能出错的点&#xff1a;int -> long long ?或者一些临界条件。 /* 美团25毕业秋招第三题&#xff0c;做题…...

LeetCode 算法:最小栈 c++

原题链接&#x1f517;&#xff1a;最小栈 难度&#xff1a;中等⭐️⭐️ 题目 设计一个支持 push &#xff0c;pop &#xff0c;top 操作&#xff0c;并能在常数时间内检索到最小元素的栈。 实现 MinStack 类: MinStack() 初始化堆栈对象。void push(int val) 将元素val推…...

【解压既玩】PS3模拟器v0.0.32+战神3+战神升天+各存档 整合包 ,完美不死机,没有BUG,旷世神作,强力推荐

战神3是圣莫尼卡公司的大作&#xff0c;PS3 上必玩的游戏之一。 本文收集了战神3和升天两作&#xff0c;附存档&#xff0c;完美不死机&#xff0c;没有BUG&#xff0c;强烈推荐。 解压即玩。 立即下载&#xff1a;【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】:通知器

文章目录 通知器案例一案例二案例三&#xff08;在不同VI中用同一个通知器&#xff09; 通知器 同步技术&#xff1a;同步技术用来解决多个并行任务之间的同步或通信问题。 通知器比较适合一对多的操作&#xff0c;类似于广播&#xff0c;一点发出的通知消息&#xff0c; 其它…...

Oracle一对多(一主多备)的DG环境如何进行switchover切换?

本文主要分享Oracle一对多(一主多备)的DG环境的switchover切换&#xff0c;如何进行主从切换&#xff0c;切换后怎么恢复正常同步&#xff1f; 1、环境说明 本文的环境为一主两备&#xff0c;数据库版本为11.2.0.4&#xff0c;主要信息如下&#xff1a; 数据库IPdb_unique_n…...

【浏览器插件】Chrome扩展V3版本

前言&#xff1a;Chrome从2022年6月开始&#xff0c;新发布插件只接受V3版。2024年V2版已从应用商店下架。 浏览器扩展插件开发API文档 chrome官网&#xff08;要翻墙&#xff09;&#xff1a; https://developer.chrome.com/docs/extensions/mv3 MDN中文&#xff1a;https:/…...

编码器信号干扰问题、编码器选型

系列文章目录 1.元件基础 2.电路设计 3.PCB设计 4.元件焊接 5.板子调试 6.程序设计 7.算法学习 8.编写exe 9.检测标准 10.项目举例 11.职业规划 文章目录 前言一、屏蔽技术1.静电屏蔽:2.低频磁屏蔽:3.电磁屏蔽:4.减少“天线” 二、增量编码器的信号选择三、信号电缆选择四、…...

Unity入门5——材质

创建材质 点击Assets → Create → Material&#xff0c;得到一个默认材质球的副本。 使用材质 直接把材质球拖拽到物体上&#xff0c;或设置mesh renderer组件下的Materials 数组中第一个元素...

C的温故而知新:存储类别、链接和内存管理(C Primer Plus第十二章)

存储类别、链接和内存管理 这一章主要涉及到的是一些偏概念的东西&#xff0c;基本上偏向于自己去理解这部分内容。很好地理解这一章可以更好地控制程序&#xff0c;合理的利用内存存储数据。 C语言提供了多种不同的模型或存储类别在内存中存储数据。作用域有块作用域、函数作…...

基于FPGA的PID算法学习———实现PID比例控制算法

基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容&#xff1a;参考网站&#xff1a; PID算法控制 PID即&#xff1a;Proportional&#xff08;比例&#xff09;、Integral&#xff08;积分&…...

Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!

一、引言 在数据驱动的背景下&#xff0c;知识图谱凭借其高效的信息组织能力&#xff0c;正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合&#xff0c;探讨知识图谱开发的实现细节&#xff0c;帮助读者掌握该技术栈在实际项目中的落地方法。 …...

IT供电系统绝缘监测及故障定位解决方案

随着新能源的快速发展&#xff0c;光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域&#xff0c;IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选&#xff0c;但在长期运行中&#xff0c;例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...

Spring数据访问模块设计

前面我们已经完成了IoC和web模块的设计&#xff0c;聪明的码友立马就知道了&#xff0c;该到数据访问模块了&#xff0c;要不就这俩玩个6啊&#xff0c;查库势在必行&#xff0c;至此&#xff0c;它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据&#xff08;数据库、No…...

Pinocchio 库详解及其在足式机器人上的应用

Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库&#xff0c;专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性&#xff0c;并提供了一个通用的框架&…...

九天毕昇深度学习平台 | 如何安装库?

pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子&#xff1a; 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...

【从零学习JVM|第三篇】类的生命周期(高频面试题)

前言&#xff1a; 在Java编程中&#xff0c;类的生命周期是指类从被加载到内存中开始&#xff0c;到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期&#xff0c;让读者对此有深刻印象。 目录 ​…...

[大语言模型]在个人电脑上部署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 #&#xff1a…...

MySQL 主从同步异常处理

阅读原文&#xff1a;https://www.xiaozaoshu.top/articles/mysql-m-s-update-pk MySQL 做双主&#xff0c;遇到的这个错误&#xff1a; Could not execute Update_rows event on table ... Error_code: 1032是 MySQL 主从复制时的经典错误之一&#xff0c;通常表示&#xff…...

客户案例 | 短视频点播企业海外视频加速与成本优化:MediaPackage+Cloudfront 技术重构实践

01技术背景与业务挑战 某短视频点播企业深耕国内用户市场&#xff0c;但其后台应用系统部署于东南亚印尼 IDC 机房。 随着业务规模扩大&#xff0c;传统架构已较难满足当前企业发展的需求&#xff0c;企业面临着三重挑战&#xff1a; ① 业务&#xff1a;国内用户访问海外服…...