C# WPF上位机开发(乘法计算小软件)

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

        上面一篇文章,我们简单了解了怎么用xaml来设计界面。和传统的c# form不一样,它除了可以通过拖拽的方法来实现界面的编写之外,本身还可以通过脚本的编写实现界面的设计。这对美工设计的同学来说,是非常方便的。但是前后端怎么绑定在一起呢?其实方法也很不复杂,就是通过关联函数。

        假设我们有一个按钮Button,它设计的时候是这样的,

<Button Content="clean"  HorizontalAlignment="Left" Margin="445,284,0,0" VerticalAlignment="Top" Width="122" Height="31"/>

        这个时候如果需要添加一个函数,那么所需要做的就是添加一个Click属性,这个属性所要关联的函数名就是我们将来需要实现的函数。我们实现了对应的函数,那么整个功能就可以顺利跑起来了。

<Button Content="clean" Click="Clean_Click" HorizontalAlignment="Left" Margin="445,284,0,0" VerticalAlignment="Top" Width="122" Height="31"/>

        所以,大家学习编程的时候可以多多思考,学习的这个内容可以解决自己的什么问题。这是一个很好的思路和出发点。如果学习的东西真的可以帮助我们解决现实当中的问题,那么对于调用我们学习的积极性来说,也会起到一个很好的促进作用。

        为了说明如何使用按钮的关联函数,我们可以写一个简单的乘法计算小程序。它可以用作小朋友学习辅导的工具,在辅导他们作业的时候发挥作用。

1、绘制窗口

        绘制窗口不复杂。它的界面其实和之前的登录小窗口很相似。主要有这么几部分组成,即乘数1、乘数2、两个按钮、两个label。大家可以简单拖动调整一下控件即可。如果觉得控件比较小,那么可以在全部选中之后,对角方向上放大或者缩小,这也是可以的。

2、调整优化窗口代码

        通过手动方式拖入的控件,一般在布局上面无法做到对齐。所以,这个时候最好我们自己修改脚本,对界面做出一些微调操作。当然,不仅于此,因为我们还要处理相关的数据,所以还要添加上按钮的关联函数,这是之前内容所没有讲到过的。经过调整之后,最后的布局是这样的,

<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="MathTest" Height="450" Width="800">
    <Grid>
        <Label Content="data1:" HorizontalAlignment="Left" Margin="214,103,0,0" VerticalAlignment="Top" Height="42" Width="72"/>
        <Label Content="data2:" HorizontalAlignment="Left" Margin="214,176,0,0" VerticalAlignment="Top" Height="41" Width="72"/>
        <TextBox x:Name="txt1" HorizontalAlignment="Left" Height="37" Margin="375,101,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="194"/>
        <TextBox x:Name="txt2" HorizontalAlignment="Left" Height="38" Margin="375,174,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="194"/>
        <Button Content="calculate" Click="Calculate_Click" HorizontalAlignment="Left" Margin="180,284,0,0" VerticalAlignment="Top" Width="122" Height="31"/>
        <Button Content="clean" Click="Clean_Click" HorizontalAlignment="Left" Margin="445,284,0,0" VerticalAlignment="Top" Width="122" Height="31"/>
    </Grid>
</Window>

3、界面分析

        通过查看上面的xaml文件,我们看到label的内容是data1:和data2:。这部分的内容可以忽略,不用关注。除了两个label之外,还添加了两个TextBox,名字分别是txt1和txt2。这个名字对我们来说至关重要,因为需要通过它,来获取到输入的字符数据。最后,界面还添加了两个按钮,内容分别是calculate和clen。每一个按钮也有自己的关联函数,calculate按钮对用的函数是Calculate_Click,而clean按钮对应的函数是Clean_Click。两个按钮都有自己的分工,前者负责计算,后者负责数据清理TextBox。

4、函数实现

        做好了界面之后,接下来就是代码的实现,所有的代码都是在MainWindow.xaml.cs完成的。为了方便大家理解,这里给出所有的代码。

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;

namespace WpfApp
{
    /// <summary>
    /// MainWindow.xaml 的交互逻辑
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void Calculate_Click(object sender, RoutedEventArgs e)
        {
            uint data1 = 0;
            uint data2 = 0;

            if(txt1.Text=="")
            {
                MessageBox.Show("Please input data1");
                return;
            }

            if(txt2.Text == "")
            {
                MessageBox.Show("please input data2");
                return;
            }

            data1 = Convert.ToUInt32(txt1.Text);
            data2 = Convert.ToUInt32(txt2.Text);
            MessageBox.Show(Convert.ToString(data1*data2));
        }

        private void Clean_Click(object sender, RoutedEventArgs e)
        {
            txt1.Text = "";
            txt2.Text = "";
        }
    }
}

        抛开IDE环境默认创建的代码,我们看到添加的函数就两个。一个是Calculate_Click,另外一个是Clean_Click。两个函数一个一个来分析下。

        Calculate_Click函数主要负责计算。它首先检测txt1的内容是否为空,接着检测txt2的内容是否为空,最后在把txt1和txt2转成整数之后,直接进行乘法计算。相应的乘法结果也通过MessageBox.Show弹出来,显示给用户查看。

        Clean_Click函数则比较简单,它的作用就是将txt1和txt2进行清零处理。

5、测试验证

        这个小demo作为自己熟悉c# wpf开发非常地合适,虽然代码内容不多,但是非常适合用来进行入门学习。大家编写好了界面,添加好了代码,就可以开始进行调试处理了。比如在输入txt1和txt2数据之后,Calculate_Click设置断点后,看看是不是软件真的可以执行到那里,是不是真的有弹窗可以跳出来显示最终的计算结果。

        断点F5之后,不出意外,就可以看到显示结果了,

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【JavaSE学习专栏】第04篇 Java面向对象

文章目录 1 面向过程&面向对象2 类和对象2.1 对象的特征2.2 java类及类的成员2.3 类的语法格式 3 创建与初始化对象3.1 类的成员之一&#xff1a;属性3.2 类的成员之二&#xff1a;方法3.3 类的成员之三&#xff1a;构造器&#xff08;构造方法&#xff09;3.3.1 无参构造方…

【算法刷题】Day10

文章目录 15. 三数之和题干&#xff1a;算法原理&#xff1a;1、排序 暴力枚举 利用set 去重2、排序 双指针 代码&#xff1a; 18. 18. 四数之和题干&#xff1a;算法原理&#xff1a;1、排序 暴力枚举 利用set 去重2、排序 双指针 代码&#xff1a; 15. 三数之和 原题链…

CentOS 部署 WBO 在线协作白板

1&#xff09;WBO 白板工具介绍 1.1&#xff09;WBO 白板简介 WBO 是一个自由和开源的在线协作白板。它允许多个用户同时在一个虚拟的大型白板上画图。该白板对所有线上用户实时更新&#xff0c;并且状态始终保持。它可以用于许多不同的目的&#xff0c;包括艺术、娱乐、设计和…

生物教师个人简历(精选21篇)

以下21篇简历内容以生物教师招聘需求为背景制作&#xff0c;大家可以灵活借鉴&#xff0c;希望能帮助大家在众多候选人中脱颖而出。 生物教师个人简历下载&#xff08;在线制作&#xff09;&#xff1a;百度幻主简历或huanzhuv.com 生物老师简历1&#xff1a; 求职意向 求职…

Java核心知识点整理大全27-笔记(已完结)

30. 云计算 30.1.1. SaaS SaaS 是 Software-as-a-Service&#xff08;软件即服务&#xff09; 30.1.2. PaaS PaaS 是 Platform-as-a-Service 的缩写&#xff0c;意思是平台即服务。 把服务器平台作为一种服务提供的 商业模式。通过网络进行程序提供的服务称之为 SaaS(Softw…

一键解决GIF转PNG难题,批量处理图片,轻松优化你的图片管理!

亲爱的朋友们&#xff0c;你是否经常遇到需要将GIF格式的图片转换成PNG格式的困扰&#xff1f;批量处理图片又是否让你感到烦恼&#xff1f;现在&#xff0c;我们为你带来了一款全新的图片处理工具——轻松转换GIF到png&#xff0c;批量处理图片&#xff0c;优化你的图片管理 …

springBoot整合quartz

springBoot整合quartz 文章目录 springBoot整合quartz 导坐标 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-quartz</artifactId></dependency>定义任务&#xff0c;不需要定义为Bean&#x…

新功能?浅谈nuclei的反制思路

code新功能&#xff1f; 写poc时&#xff0c;习惯性查官方文档的时候&#xff0c;注意到了一个新的功能&#xff1a;code 链接直达&#xff1a;https://docs.projectdiscovery.io/templates/protocols/code 大概翻译下&#xff1a; Nuclei 支持在主机操作系统上执行外部代码。…

注意力机制及Transformer-3GPT版

#pic_center R 1 R_1 R1​ R 2 R^2 R2 目录 知识框架No.1 自注意力机制(self-attention)一、输入的种类以及表示1、输入是a vector2、输入是a set of vectors(一段文字)3、输入是a set of vectors(一段音频)4、输入是a set of vectors(一段图谱)5、输入是a set of vectors(一个…

4个Pycharm高效插件

大家好&#xff0c;Pycharm是Python最受欢迎的集成开发环境之一&#xff0c;它具有良好的代码助手、漂亮的主题和快捷方式&#xff0c;使编写代码变得简单快捷。话虽如此&#xff0c;开发者仍可以通过使用一些插件来提高在Pycharm中编写Python代码的效率和乐趣&#xff0c;在市…

00后卷王真的很卷吗?

前言 都在传00后躺平、整顿职场&#xff0c;但该说不说&#xff0c;是真的卷&#xff0c;感觉我都要被卷废了... 前段时间&#xff0c;公司招了一个年轻人&#xff0c;其中有一个是00后&#xff0c;工作才一年多&#xff0c;直接跳槽到我们公司&#xff0c;薪资据说有18K&…

Docker下搭建MySQL主从复制

目录 主从复制简介 主从复制搭建 主从复制简介 主从复制&#xff0c;是用来建立一个和主数据库完全一样的数据库环境&#xff0c;称为从数据库&#xff1b;主数 据库一般是准实时的业务数据库。 主从复制的作用 做数据的热备。作为后备数据库&#xff0c;主数据库服务器故…

Elasticsearch:么是向量嵌入?

向量嵌入定义 向量嵌入 (vector embeddings) 是一种将单词、句子和其他数据转换为捕获其含义和关系的数字的方法。 它们将不同的数据类型表示为多维空间中的点&#xff0c;其中相似的数据点更紧密地聚集在一起。 这些数字表示可以帮助机器更有效地理解和处理这些数据。 单词和…

Jenkins持续集成之修改jenkins工作目录

修改jenkins工作目录 一般不建议把工作目录放到默认的C盘&#xff0c;故可以更改到其他盘中 前置条件&#xff1a;先在其他盘中新建工作目录的文件&#xff1b;如下图 1、首先打开任务管理器&#xff0c;找到服务中的Jenkins进程 2、右击点击转到详细信息&#xff1b; 3、再右…

分享4个工具,轻松搞定PDF和图像中提取文本

大型语言模型已经席卷了互联网&#xff0c;导致更多的人没有认真关注使用这些模型最重要的部分&#xff1a;高质量的数据&#xff01; 本文旨在提供一些有效从任何类型文档中提取文本的技术。 Python库 本文专注于Pytesseract、easyOCR、PyPDF2和LangChain库。实验数据是一个…

shell 脚本计算距离最近的坐标

shell 脚本计算距离最近的坐标 坐标数据文件geo.log格式如下&#xff1a; beijing(116.405285,39.904989) tinajin(117.190182,39.125596) hebei(114.502461,38.045474) shanxi(112.549248,37.857014) neimenggu(111.670801,40.818311) liaoning(123.429096,41.796767) jilin(1…

012 OpenCV sobel边缘检测

目录 一、环境 二、soble原理介绍 三、源码实验 一、环境 本文使用环境为&#xff1a; Windows10Python 3.9.17opencv-python 4.8.0.74 二、soble原理介绍 Sobel边缘检测是一种广泛应用于图像处理领域的边缘检测算法&#xff0c;它通过计算图像灰度函数在水平方向和垂直…

包装材料ERP是什么?包装材料ERP有什么用

市面上的包装材料种类多种多样&#xff0c;而这些差异化的包装材料对应的产成品规格、型号、质量、销售策略和生产工艺等方面存在诸多差异。 另外&#xff0c;通常包装材料企业的营销渠道比较广泛&#xff0c;不同的销售平台有多样化的业务流程和管理方式&#xff0c;相同的商…

数字员工「取数宝」上新!4大优势,解决电商取数难题

全域电商&#xff0c;是近几年的新趋势&#xff0c;几乎所有商家都在布局全域&#xff0c;追求全域增长。但商家发现&#xff0c;随着投入成本的上涨&#xff0c;利润却没有增加。 其中最为突出的是——商家为保证全域数据的及时更新&#xff0c;通过堆人头的方式完成每日取数…

idea汉化

所有的jetbrains 汉化包下载地址&#xff0c; 包括leda &#xff0c;pycharm /&#xff0c;datagrip 等软件&#xff0c;&#xff0c;所有方法都一样&#xff1a;搜索对应的版本需要的包 下载后&#xff0c;在idea的插件中选择从磁盘加载&#xff0c;然后重启 &#xff0c;即可…