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

C# WPF上位机开发(属性页面的设计)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        在软件开发中,属性或者参数设置是很重要的一个部分。这个时候如果不想通过动态添加控件的方法来处理的话,那么可以通过tab控件来解决。tab控件的好处很多,最大的优点就是可以实现单个page上面,放置尽可能多的属性设置。

        以某汽车设备来说,如果是单页面,那么只能放置一些常用的内容。但是如果是tab页面,可以添加多个tab,比如大灯、空调、动力、安全、音乐、座椅等等,基本上你想放多少个tab,就可以放多少tab。每一个tab下面都是独立的页面,里面也可以放很多的子控件。以音乐为例,可以调节音量大小、播放方式、歌曲类型、歌手类型、专辑类型等等,这些都是可以灵活设置的。

        用c# wpf开发tab,也是很方便的。主要的操作都是在xaml文件配置完成的,并不需要添加太多的代码内容。

1、xaml设计

<Window x:Class="WpfApp.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:WpfApp"mc:Ignorable="d"Title="MainWindow" Height="450" Width="600"><Grid ><TabControl><TabItem Header="Tab 1"><StackPanel><TextBlock Text="This is Tab 1" /><Button Content="Click me"  Height="40" Width="60" Click="Button_Click"  /></StackPanel></TabItem><TabItem Header="Tab 2"><TextBlock Text="This is Tab 2" /></TabItem></TabControl></Grid>
</Window>

        为了说明tab如果使用,这里添加了一个tab control、两个tab item。tab control相当于tab的总入口,在tab里面有两个tab子页面,也就是tab item的部分。第一个tab item的名字叫tab 1,子页面里面又添加了一个text block和一个button。第二个tab item里面就比较简单,这里只是添加了一个text block。设计完成之后,显示出来的效果就是这样的,

        整个xaml是所见即所得的,xaml修改好之后,马上就可以看到对应的效果。tab control和tab item控件也是一样。

2、代码部分

        和xaml相比较,代码部分就比较少,这里主要就是一个按钮的回调函数Button_Click,实现的内容也就是弹出一个消息对话框而已。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;using System.Threading;namespace WpfApp
{/// <summary>/// MainWindow.xaml 的交互逻辑/// </summary>public partial class MainWindow : Window{public MainWindow(){InitializeComponent();}private void Button_Click(object sender, RoutedEventArgs e){MessageBox.Show("Button in Tab 1 clicked!");}}}

        编译运行后,效果就是这样的,

3、后续建议

        从实用的角度来说,tab非常非常地方便,特别是如果关联的对象参数比较多,那么完全可以用tab来实现对应地功能,很好用。记得以前用mfc编写界面的时候,非常麻烦,需要这里添加代码、那里添加代码,xaml文件没有这个烦恼,所见即所得,修改之后马上就可以看到效果。这是mfc之类的gui编辑软件没有办法比拟的。

4、其他

        关于tab、grid、tree这一列的控件,都可以看成是容器控件。如果说另外一种用的比较多的控件,可能groupbox也算一类吧,大家平时开发的时候可以多多尝试,多多练习。

<Window x:Class="WpfApp.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:WpfApp"mc:Ignorable="d"Title="MainWindow" Height="450" Width="600"><Grid><Grid.ColumnDefinitions><ColumnDefinition Width="160"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions><!-- 主容器 --><GroupBox Grid.Column="0" Header="Gender"  Margin="10,10,10,10"><StackPanel><!-- RadioButton 分组1 --><RadioButton Content="Male" GroupName="GenderGroup" Margin="5"/><RadioButton Content="Female" GroupName="GenderGroup" Margin="5"/></StackPanel></GroupBox></Grid>
</Window>

        对应的效果是这样的,

相关文章:

C# WPF上位机开发(属性页面的设计)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 在软件开发中&#xff0c;属性或者参数设置是很重要的一个部分。这个时候如果不想通过动态添加控件的方法来处理的话&#xff0c;那么可以通过tab控…...

macOS 安装 oh-my-zsh 后 node 报错 command not found : node

最近为了让终端中显示 git 分支的名称&#xff0c;安装了 oh-my-zsh &#xff0c;安装之后呢&#xff0c;我原先安装的 Volta、 node 都没法用了&#xff0c;报错如下&#xff1a; 这时候粗略判断应该是系统变量出了问题&#xff0c;oh-my-zsh 的变量文件是 ~/.zshrc&#xff0…...

AI 绘画 | Stable Diffusion 视频数字人

前言 本篇文章教会你如何利用Stable Diffusion WEB UI,使用一个人物图片转换成为一个口播视频。本篇内容的教程以WINDOWS系统为例,教你如何安装使用。 先看视频效果 彭于晏图片生成口播视频 安装 首先需要在windows电脑上安装ffmpeg,按照本教程《在 Windows PC 上轻松下载并…...

《代码随想录》--二叉树(一)

《代码随想录》--二叉树 第一部分 1、二叉树的递归遍历2、二叉树的迭代遍历3、统一风格的迭代遍历代码4、二叉树的层序遍历226.翻转二叉树 1、二叉树的递归遍历 前序遍历 中序遍历 后序遍历 代码 前序遍历 class Solution {public List<Integer> preorderTraversal(T…...

shell编程-数组与运算符详解(超详细)

文章目录 前言一、 Shell数组1. 声明和初始化数组2. 访问数组元素3. 数组长度4. 遍历数组5. 修改数组元素6. 删除数组元素7. 示例 二、Shell运算符1. 算术运算符1.1 加法运算符 ()1.2 减法运算符 (-)1.3 乘法运算符 (*)1.4 除法运算符 (/)1.5 取余运算符 (%) 2. 关系运算符2.1 …...

Vim入门

Vim使用入门 1.Vim编辑器的三种常用模式 一般模式&#xff1a;刚打开文件是它&#xff0c;从编辑模式按“ESC”退回的模式也是它。可以执行各种编辑操作&#xff0c;如移动光标、复制、粘贴、删除、查找替换等 ; 编辑模式&#xff1a;在一般模式下按下 i、I、a、A、o、O 等键…...

动态加载库

no_mangle 不要改标识符 首先是认识这个标注&#xff1a;mangle&#xff0c;英文的含义“撕裂、碾压”。我第一次把这个单次误以为是manage&#xff0c;说实话两个单词还挺像的。 RUS中函数或静态变量使用#[no_mangle]这个标注属性后&#xff0c;编译器就不会修改它们的名字了…...

React中渲染html结构---dangerouslySetInnerHTML

dangerouslySetInnerHTML胡子{}语法绑定的内容全部作为普通文本渲染&#xff0c;渲染html结构基于---dangerouslySetInnerHTMLdangerouslySetInnerHTML是React标签的一个属性&#xff0c;类似于vue的v-html有2个{{}},第一个{}代表jsx语法开始&#xff0c;第二个是代表dangerous…...

计网02-计算机网络参考模型

一、OSI七层参考模型 1、分层的思想 分层模型用于网络协议的设计方法&#xff0c;本质是将网络节点间复杂的通信问题分成若干简单的问题逐一解决&#xff0c;通过网络的层次去找问题&#xff0c;将复杂问题简单化。 2、OSI参考模型 由于早期计算机厂商使用的是私有的网络模…...

模块测试:确保软件质量的关键步骤

引言&#xff1a; 在软件开发过程中&#xff0c;模块测试是确保软件质量的关键环节。通过模块化的设计和测试方法&#xff0c;可以提高开发效率、降低错误率&#xff0c;并最终提供稳定可靠的软件产品。本文将介绍模块测试的概念、重要性以及实施步骤&#xff0c;帮助读者了解如…...

Postman接口测试之Postman常用的快捷键

作为一名IT程序猿&#xff0c;不懂一些工具的快捷方式&#xff0c;应该会被鄙视的吧。收集了一些Postman的快捷方式&#xff0c;大家一起动手操作~ 简单操作 xc 请求 操作MAC系统windows系统请求网址 ⌘L Ctrl L 保存请求 ⌘S Ctrl S 保存请求为 ⇧⌘S Ctrl Shift S发送…...

keil自动分配SDRAM空间设置使用

1.修改.sct文件 添加 RW_RAM1 0xC0400000 UNINIT 0x00400000 { ; RW data .ANY (SD_RAM1) 使用 #define LOCATION_ATTRIBUTE(name) __attribute__ ((section(name))) __attribute__ ((aligned(4)))uint8_t sdram_buf[0x100000] __attribute__ ((section("SD_RAM1")…...

TikTok获客怎么做?可以定制一个获客工具!

随着社交媒体的兴起&#xff0c;越来越多的企业开始将目光投向了短视频平台&#xff0c;TikTok作为其中的佼佼者&#xff0c;凭借其独特的算法和内容推荐机制&#xff0c;吸引了大量用户的关注。 那么&#xff0c;如何在TikTok上获取更多的客户呢?本文将为您揭秘TikTok获客的…...

数据结构(Chapter Two -02)—顺序表基本操作实现

在前一部分我们了解线性表和顺序表概念&#xff0c;如果有不清楚可以参考下面的博客&#xff1a; 数据结构(Chapter Two -01)—线性表及顺序表-CSDN博客 首先列出线性表的数据结构&#xff1a; #define MaxSize 50 //定义顺序表最大长度 typedef struct{ElemType data…...

SQL语句整理二--Mysql

文章目录 知识点梳理&#xff1a;1. mysql 中 in 和 exists 区别2. varchar 与 char 的区别 查看表结构&#xff1a;获取当前时间&#xff1a;查看建表语句&#xff1a;修改用户密码&#xff1a;查看所有用户&#xff1a;grant命令&#xff1a;判断当前数据库有多少连接数&…...

oracle与gbase8s迁移数据类型对照

声明&#xff1a;以下为笔者阅读gbase官方文档和oracle官方文档的理解&#xff0c;如有错误&#xff0c;敬请指正。oracle与gbase8s迁移数据类型对照及举例说明 最终结论&#xff1a;oracle与gbase8s数据类型对应关系关于单精度与双精度的区别关于定点与浮点定义的区别精度的定…...

Flink系列之:集合操作

Flink系列之&#xff1a;集合操作 一、集合操作二、UNION三、INTERSECT四、EXCEPT五、IN六、EXISTS 一、集合操作 适用于流、批操作 二、UNION UNION 和 UNION ALL 返回两个表中的数据。 UNION 会去重&#xff0c;UNION ALL 不会去重。 Flink SQL> create view t1(s) as…...

STL:string的常见用法

目录 赋值和连接&#xff1a; operator: 赋值操作符&#xff1a; assign(str): 将字符串赋值为另一个字符串&#xff1a; : 字符串连接操作符&#xff1a; 访问和检查&#xff1a; at(pos): 返回指定位置的字符&#xff0c;提供边界检查。 operator[]: 返回指定位置的字符…...

GBASE南大通用 ADO.NET 中的事务

GBASE南大通用 ADO.NET 中支持事务&#xff0c;可以使用GBASE南大通用Connection 对象的BeginTransaction 函数开始一个事务&#xff0c;并默认使用 ReadCommitted 模式初始化。 事务中可以对单个表执行多个操作&#xff0c;或者对多个表执行多个操作&#xff0c;在事务未提交…...

App(Android)ICP备案号查询——————高仿微信

&#x1f604; 个人主页&#xff1a;✨拉莫帅-CSDN博客✨&#x1f914; 博文&#xff1a;132篇&#x1f525; 原创&#xff1a;130篇&#xff0c;转载&#xff1a;2篇&#x1f525; 总阅读量&#xff1a;388923❤️ 粉丝量&#xff1a;112&#x1f341; 感谢点赞和关注 &#x…...

GHelper深度解析:重新定义华硕笔记本性能控制体验

GHelper深度解析&#xff1a;重新定义华硕笔记本性能控制体验 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops. Control tool for ROG Zephyrus G14, G15, G16, M16, Flow X13, Flow X16, TUF, Strix, Scar and other models 项目地址: h…...

AndroidTVLauncher自定义功能卡片开发:FunctionCardPresenter实现原理与实践

AndroidTVLauncher自定义功能卡片开发&#xff1a;FunctionCardPresenter实现原理与实践 【免费下载链接】AndroidTVLauncher This is a leanback style tv launcher(minSdkVersion 17) 项目地址: https://gitcode.com/gh_mirrors/an/AndroidTVLauncher AndroidTVLaunch…...

FlowScope:一款注重隐私的SQL数据血缘分析工具

最近团队接手了一个新的数据仓库项目&#xff0c;这个项目已经开发了很多年&#xff0c;包含了几百个表和几万行 ETL 存储过程代码。 目前我们经常面临的问题包括&#xff1a; 这个字段从哪里来&#xff1f;这张表被哪些存储过程用到了&#xff1f;修改这个字段会影响哪些 ET…...

EasyAnimateV5中文模型快速部署:Docker Compose一键拉起全栈服务

EasyAnimateV5中文模型快速部署&#xff1a;Docker Compose一键拉起全栈服务 1. 开篇&#xff1a;让图片动起来的AI魔法 你有没有想过&#xff0c;一张静态的照片能在几秒钟内变成生动的视频&#xff1f;现在&#xff0c;这个想法已经变成了现实。EasyAnimateV5中文模型就是这…...

CopyManga下载器新手指南:从入门到精通的漫画收藏解决方案

CopyManga下载器新手指南&#xff1a;从入门到精通的漫画收藏解决方案 【免费下载链接】copymanga-downloader 使用python编译exe/bash/命令行参数来下载copymanga(拷贝漫画)中的漫画&#xff0c;支持批量选话下载和获取您收藏的漫画并下载&#xff01;(windows&linux支持&…...

保姆级教程:小米AX3000T刷OpenWrt 24.10.0全流程(含救砖指南)

小米AX3000T路由器刷OpenWrt全流程实战指南 作为一名长期折腾家用路由器的技术爱好者&#xff0c;我最近刚完成了小米AX3000T刷OpenWrt的全过程。相比官方固件&#xff0c;OpenWrt提供了更强大的自定义功能和性能优化空间。本文将分享从准备工作到救砖方案的完整经验&#xff…...

10大好用的班组建设系统盘点!助力企业高效开展班组建设

在2026年数字化转型的深水区&#xff0c;班组建设系统已成为企业夯实基层管理、提升执行力的核心引擎。面对市场上琳琅满目的工具&#xff0c;如何筛选出真正好用的班组建设系统&#xff0c;切实助力企业高效开展班组建设&#xff0c;是管理者面临的首要难题。本文深度盘点10大…...

PPTist:5分钟掌握专业级在线PPT制作,免费开源的高效演示解决方案

PPTist&#xff1a;5分钟掌握专业级在线PPT制作&#xff0c;免费开源的高效演示解决方案 【免费下载链接】PPTist 基于 Vue3.x TypeScript 的在线演示文稿&#xff08;幻灯片&#xff09;应用&#xff0c;还原了大部分 Office PowerPoint 常用功能&#xff0c;实现在线PPT的编…...

Cursor规则太多跑得慢?手把手教你优化.cursor配置,给VSCode插件‘减负’提速

Cursor性能优化实战&#xff1a;让智能编码助手重获流畅体验 当你的指尖在键盘上飞舞时&#xff0c;最令人沮丧的莫过于等待工具响应。作为深度集成AI能力的现代编码环境&#xff0c;Cursor在提供智能补全和代码建议的同时&#xff0c;也可能因为规则膨胀而逐渐变得迟缓。我曾见…...

PingFangSC字体全栈应用指南:从技术原理到性能优化

PingFangSC字体全栈应用指南&#xff1a;从技术原理到性能优化 【免费下载链接】PingFangSC PingFangSC字体包文件、苹果平方字体文件&#xff0c;包含ttf和woff2格式 项目地址: https://gitcode.com/gh_mirrors/pi/PingFangSC 解析字体技术原理&#xff1a;为什么格式选…...