C# WPF上位机开发(文本编辑器的界面开发)

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

        通常我们学习一个新软件的时候,一般都要看下这个软件有哪些菜单、工具栏有什么、状态栏有什么。每一个菜单或者工具代表着什么意义,这就是我们学习新软件的基本方式。为什么要这么做,那是因为大部分软件都是在windows平台开发的,平台本身推荐的软件开发方式也是这么一种模式。所以,大家如果是开发windows软件,最好也是按着这种套路来进行开发,降低使用者学习的成本。

        这里为了学习菜单、工具栏和状态栏的设计,可以自己设计一款简单的文本编辑器,通过这样的方式,掌握一下这种模式开发应该怎么进行的。

1、菜单添加

        菜单主要是由Menu和MenuItem构成的。MenuItem里面可以嵌套MenuItem,这就是所谓的菜单嵌套。如果需要点击菜单的时候,弹出对应的窗口,那么只需要实现对应的函数就可以了。

            <Menu DockPanel.Dock="Top"><MenuItem Header="文本"><MenuItem Name="menuCreate" Header="创建文本" Click="MenuItem_Click"></MenuItem><MenuItem Header="删除文本"></MenuItem><MenuItem Header="复制文本"></MenuItem></MenuItem><MenuItem Header="编辑"></MenuItem><MenuItem Header="视图"></MenuItem><MenuItem Header="关于"></MenuItem></Menu>

2、工具栏

        和菜单栏相比较,工具栏简单很多。首席我们需要创建一个Toolbar的控件,接着在这个空间里面放上各种Button,Button和Button之间添加分隔符,这就是工具栏的形式。当然,如果需要美观一点的话,可以在Button的旁边插入各种图片,这样整体的布局效果要好看的多。

            <ToolBar DockPanel.Dock="Top"><Button Content="保存" Click="Button_Click"></Button><Separator></Separator><Button Content="另存为"></Button><Separator></Separator><Button Content="打印预览"></Button><Separator></Separator><Button Content="打印"></Button><Separator></Separator><Button Content="属性设置"></Button></ToolBar>

3、状态栏

        状态栏和工具栏很类似,同样我们也需要创建一个Statusbar的控件。在这个控件里面,通过插入TextBlock、Label等方式,就可以呈现出状态栏的效果了。这里只是为了演示,添加了一个TextBlock控件。

            <StatusBar DockPanel.Dock="Bottom"><TextBlock Text="编辑状态"></TextBlock></StatusBar>

4、整体布局

        上面只是简单了说明一下菜单、工具栏、状态栏是怎么编写的。如果是整体设计的话,我们可以Grid里面嵌套一个DockPanel,通过它的Top、Bottom机制来实现全部控件的布局。另外空间中涉及到的回调函数也是非常简单,主要就是调用MessageBox.Show函数来完成对应按钮的功能响应。最后有需要的朋友,可以参考下这个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="文本编辑器" Height="400" Width="700"><Grid><DockPanel Margin="0,0,-0.4,0.4"><Menu DockPanel.Dock="Top"><MenuItem Header="文本"><MenuItem Name="menuCreate" Header="创建文本" Click="MenuItem_Click"></MenuItem><MenuItem Header="删除文本"></MenuItem><MenuItem Header="复制文本"></MenuItem></MenuItem><MenuItem Header="编辑"></MenuItem><MenuItem Header="视图"></MenuItem><MenuItem Header="关于"></MenuItem></Menu><ToolBar DockPanel.Dock="Top"><Button Content="保存" Click="Button_Click"></Button><Separator></Separator><Button Content="另存为"></Button><Separator></Separator><Button Content="打印预览"></Button><Separator></Separator><Button Content="打印"></Button><Separator></Separator><Button Content="属性设置"></Button></ToolBar><TextBox DockPanel.Dock="Top" Text="这里输入文字......" Height="300"  ></TextBox><StatusBar DockPanel.Dock="Bottom"><TextBlock Text="编辑状态"></TextBlock></StatusBar></DockPanel></Grid>
</Window>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/266885.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

无线且列窄图片如何转excel?

写此文原因&#xff1a;图片要转excel&#xff0c;这放以前&#xff0c;是不能实现的功能&#xff0c;但随着人工智能的蓬勃发展&#xff0c;人们已克服了这一难题&#xff0c;但是&#xff0c;我们知道&#xff0c;要将图片识别成excel&#xff0c;识别程序首先要先识别图片中…

nodejs+vue+微信小程序+python+PHP基于spark的酒店管理系统-计算机毕业设计推荐

通过管理系统进行全面的线上管理。管理者可以通过基于spark的酒店管理系统&#xff0c;全面掌握酒店客房的各项状态&#xff0c;会员通过系统查询酒店客房信息&#xff0c;在线预定。 酒店作为旅游过程必须的设施&#xff0c;也逐渐需需要进行信息化管理&#xff0c;把酒店类型…

PDF控件Spire.PDF for .NET【转换】演示:将 PDF 转换为 Excel

PDF是一种通用的文件格式&#xff0c;但它很难编辑。如果您想修改和计算PDF数据&#xff0c;将PDF转换为Excel将是一个理想的解决方案。在本文中&#xff0c;您将了解如何使用Spire.PDF for .NET在 C# 和 VB.NET 中将 PDF 转换为 Excel。 Spire.Doc 是一款专门对 Word 文档进行…

【LeetCode刷题-树】-- 103.二叉树的锯齿形层序遍历

103.二叉树的锯齿形层序遍历 方法&#xff1a;广度优先搜索 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNode(int …

【JavaWeb学习笔记】8 - HTTP

一、常用文档 请求头 响应头 中间件获取的网页协议和返回的内容 这些称为HTTP协议 请求和响应 常见的请求头 响应头 状态码 HTTP状态码 当浏览者访问一个网页时&#xff0c;浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前&#xff0c;此网页所在的服务…

.net 安装Postgresql驱动程序ngpsql

.net 安装Postgresql驱动程序ngpsql 最近搞一个物联网项目&#xff0c;需要采集fanuc数控机床的数据&#xff0c;厂家提供的API只支持windows&#xff0c;所以就决定C#开发&#xff0c;数据库用postgresql&#xff0c; 安装数据库驱动一波三折。 作为一个讨厌微软的老程序猿&…

Linux16 ftp文件服务区、vsftpd文件系统服务安装、lftp客户端安装、NFS远程共享存储

目录 一、FTP基础ftp主动模式ftp被动模式 二、vsftpd配置共享目录编辑配置文件使用windows 访问 三、客户端安装 &#xff08;lftp&#xff09;匿名用户的一些操作&#xff08;lftp {ip}&#xff09;ftp配置本地用户登录配置本地用户ftp配置文件 lftp操作 NFS远程共享存储安装n…

BERT大模型:英语NLP的里程碑

BERT的诞生与重要性 BERT&#xff08;Bidirectional Encoder Representations from Transformers&#xff09;大模型标志着自然语言处理&#xff08;NLP&#xff09;领域的一个重要转折点。作为首个利用掩蔽语言模型&#xff08;MLM&#xff09;在英语语言上进行预训练的模型&…

conda 计算当前包的个数

Conda是一个强大的包管理器和环境管理器&#xff0c;它用于安装和管理来自不同源的软件包。若要计算当前conda环境中安装的包的数量&#xff0c;你可以使用以下命令&#xff1a; 首先&#xff0c;激活你想要检查的conda环境&#xff08;如果不是默认的base环境&#xff09;&am…

dockerfile创建自定义镜像

1、作用 创建自定义的镜像&#xff0c;包含配置文件、挂载点、对外暴露的端口、设置环境变量等 2、docker创建镜像的方式 &#xff08;1&#xff09;基于已有镜像创建 根据官方提供的镜像源创建镜像&#xff0c;拉取容器&#xff0c;但空空如也&#xff0c;只能提供基础功能…

Swagger快速上手

快速开始&#xff1a; 导入maven包 <dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.7.0</version> </dependency><dependency><groupId>io.springfox<…

深拷贝、浅拷贝 react的“不可变值”

知识获取源–晨哥&#xff08;现实中的人 嘿嘿&#xff09; react中如果你想让一个值始终不变 或者说其他操作不影响该值 它只是作用初始化的时候 使用了浅拷贝–改变了初始值 会改变初始值(selectList1) 都指向同一个地址 const selectList1 { title: 大大, value: 1 };con…