WinForm,可能是Windows上手最快的图形框架了

news2025/7/19 21:02:02

文章目录

    • Label和控件属性
    • 按钮和回调逻辑
    • 事件
    • 常用控件

Label和控件属性

WinForm是一门非常经济实惠的技术,就是说,可以在短时间内学会,并迅速借此进行项目开发。尽管在很多方面不够现代,做出来的东西又Low又丑,但绝大多数的应用场景也不需要高端大气上档次。或许正是因为这种特点,WinForm在工控领域用得非常多,毕竟可以迅速实现某个小功能。

在VS中创建新项目,模板为C#Windows窗体应用,名称位置啥的随便选。

创建成功之后,进入设计窗口,可以看到默认已经生成了一个窗口,如下图所示,然后就可以愉快地拖控件了,所有控件都在左侧的工具箱里。如果初次打开看不到工具箱,可以试一下快捷键Ctrl+Alt+X

在这里插入图片描述

接下来用鼠标把工具箱中的Label拖动到窗口Form1上面,同时关注VS右下角的属性栏,可以看到Label的属性,如下图所示。

在这里插入图片描述

当然,VS中的很多工具栏都可以拖动到任意位置,上图就是点击属性栏的标志,选择浮动,然后拖动到了Form1的右侧。

其中,(Name)为这个Label1控件在程序中的名字,若想在C#中调用这个标签,就得用到这个名字。

拖动属性栏的滚动条,在外观这一标题下,有Text属性,其内哦让那个为label1,这个Text是Label1这个控件所展示出来的字符,将其更改后,窗口上的标签也响应发生变化,就像下图这样

在这里插入图片描述

外观这一主题中的参数,在改动之后几乎都没有什么严重后果,比如各种配色啥的都可以尝试一番,这里就不一一演示了。

按钮和回调逻辑

接下来从工具箱中拖动一个按钮,即把Button拖动到Form1上,将其Text属性改为新Label;将其Name改为btnChangeLabel

然后双击这个按钮,神奇的一幕发生了,设计窗口不见了,取而代之的是我们熟悉的代码界面,其内容为

namespace WinFormsTest
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void btnChangeLabel_Click(object sender, EventArgs e)
        {

        }
    }
}

命名空间就不说了,Form1是一个继承了Form的类,而其修饰语中,除了老面孔public,又多了一个partial,这个partial表示下面花括号括起来的代码,可以是Form1的一部分。更具体一点,就是说这个Form1类可以写在多个文件中。

接下来,public Form1(),是Form1的构造函数,无需赘言。

再往下,就是刚刚双击按钮所自动生成的响应函数,其中private表示这个函数是个私有函数,只有在Form1这个类中才能被调用。函数名也是自动生成的,包括两部分,下划线前面的就是按钮的名字,下划线后面Click,表示这个函数的触发条件是单击。

然后函数的输入参数有两个,分别是object类型的sender,以及EventArgs类型的e,前者表示刚刚点击的那个按钮,后者表示点击的这个动作。

梳理一下就是,点击按钮是产生了两个变量,即按钮和动作,这两个变量被传递给了btnChangeLabel_Click函数,接下来我们就要写一下这个函数

private void btnChangeLabel_Click(object sender, EventArgs e)
{
    label1.Text = "并没有新Label,只有新Text";
}

label1就是上一节创建的Labellabel1.Text就是上一节所说的LabelText属性。这个函数的意思是,当点击按钮的时候,label1的文字发生变化,效果为

在这里插入图片描述

事件

点击Shift+F7可以从代码界面返回到设计界面,选中按钮后,查看右下角其对应的属性栏,可以看到一个闪电的小图标,点击这个图标,下拉滚动条,可以看到操作这个子标题下,有个Click的操作,其右侧内容为btnChangeLabel_Click

至此,事情的前因后果应该就清晰了,按钮btnChangeLabel正是在这个小闪电这里,注册了Click这种操作,并取名为btnChangeLabel_Click,然后才有了代码界面中的函数。

在这个小闪电所对应的列表中,就是可以绑定到按钮btnChangeLabel中的各种事件Click只是其中一种。这些事件被详细地分门别类,这些类别也很有条理,只有最后一组Key,不知道被哪个神仙翻译成了钥匙,其实指的应该是按键吧。

比如,接下来可以注册一个KeyDown的命令,在其右侧填入btnTest_KeyDown后然后回车,VS会自动跳回到代码界面,并已经新建好了相应的函数

private void btnTest_KeyDown(object sender, KeyEventArgs e)
{
}

这是个键盘按键触发的事件,里面的函数随意填写就好,

接下来从工具箱中拖动一个TextBoxForm1,在右下角的属性栏里,将其重命名为tbTest。别忘了点击一下小闪电左边的小扳手,否则在事件列表中是找不到Name属性的。

接下来点击F7,跳转回C#界面,更改在btnTest_KeyDown这个函数

private void btnTest_KeyDown(object sender, KeyEventArgs e)
{
    tbTest.Text = $"{e.KeyCode}:啊我被按下了";
}

其中,$字符串早就讲过了,可以将花括号中的数据转成字符串。e.KeyCode表示按键对应的代码。

因为强迫症的原因,貌似还得新建一个对偶的函数,细节就不赘述了,反正写成如下这样

private void btnTest_KeyUp(object sender, KeyEventArgs e)
{
    tbTest.Text = $"{e.KeyCode}:嘿嘿我又弹起来了";
}

效果为

在这里插入图片描述

常用控件

在设计界面,TextboxLabel, Button似乎有点区别,即选中之后,其右上角会出现一个三角,点击之后会出现一个单选框,内容是多行

也就是说,正常创建的Textbox是不支持回车换行的,但选择了多行之后,就支持了。

有这种额外内容的控件为数不少,比如ComboBox,下拉选框,将其从工具箱拖动到Form1之后,点击,选择编辑项,于是弹出了字符串集合编辑器,按照提示,在里面输入

春
夏
秋
冬

然后运行程序,可以自行看看效果。

PictureBox,顾名思义是图片箱子,将其拖动到Form1后,同样点击->选择图像,会弹出选择资源对话框,选择本地资源->导入,就可以把任何一张图片展示在PictureBox中了。如果图像尺寸不合适,可以将大小模式选为Zoom

最后,有三个简单控件一直没来得及说,即CheckBoxLinkLabel以及NumericUpDown,这三个控件分别是单选框、链接标签以及数值框。

其中,单选框可以与布尔数据类型相匹配,其属性Checked为布尔数据类型,故常用于表示某种开关;LinkLabel的外表是有下划线像链接一样的Label,但其内在却是个按钮,可以绑定点击事件;NumericUpDownValue属性为数值类型,常用于设置数值变量。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Redis的优惠券秒杀问题(六)超卖问题、一人一单问题

Redis的优惠券秒杀问题(六)超卖问题、一人一单问题 超卖问题 问题描述 使用Jmeter进行压测 发生超卖问题原因分析 解决方案 悲观锁与乐观锁 1. 版本号 2. CAS法 CAS三大问题(题外话!) CAS三大问题的解…

误差和梯度下降

Datawhale开源学习,机器学习课程,项目地址:https://github.com/datawhalechina/leeml-notes 之前讲了线性模型,提到了误差,那么误差来自哪里?本节内容将介绍「偏差」、「方差」对模型拟合度的影响&#xff…

西电计组II 实验1

西电计组II 实验1 文章目录西电计组II 实验18086汇编 IO操作环境搭建8086汇编 helloworldassumesegmentdb编译链接lstmapobjexesymdobint 21H 软件中断程序设计要求全局变量函数设计putchargetcharprintnewlineinputmemsetexithexbinarycircle程序入口完整代码8086汇编 IO操作 …

wav to image 的数据集制作代码

🍿*★,*:.☆欢迎您/$:*.★* 🍿 目录 背景 正文 总结 背景描述

python+django网吧会员管理系统

系统项目截图 本网吧管理系统主要包括三大功能模块,即管理员、会员、网管。 (1)管理员模块:首页、个人中心、会员管理、网管管理、商品类型管理、商品信息管理、购买商品信息管理、呼叫网管管理、电脑信息管理、用户上机管理、用户…

汇编语言外中断

外中断 文章目录外中断1.外中断概念2.PC机键盘的处理过程1.外中断概念 CPU在计算机系统中,除了能够执行指令,进行运算以外,还应该能够对外部设备进行控制,接收它们的输入,向它们进行输出(I/O能力&#xff0…

如何把家装修出温馨的感觉?极家好不好

如何把家装修出温馨的感觉?极家好不好?想要让家变成理想的样子!如何进行! 第一步:找一个靠谱的装修团队,特别重要的是项目经理,极家好不好这个真的真的真的很重要‼️ 一个好的装修团队&#xf…

Windbg可以看到Visual Studio中看不到的有效函数调用堆栈

目录 1、Visual Studio中看不到有效的函数调用堆栈 2、使用Windbg调试运行主程序,看到了有效的函数调用堆栈 3、根据函数名和行号去查看对应的C源码,定位问题 4、总结 VC常用功能开发汇总(专栏文章列表,欢迎订阅,持…

Frechet distance距离计算原理及python实现

Frechet distance概念 弗雷彻距离(Frechet distance)定义了一种考虑位置和点的次序的计算两条曲线相似度的方法,常用于时间序列相似度度量和轨迹序列相似度度量。该指标的算法可用the walking dog problem来描述:想象一个人用牵引带遛狗的同时&#xff0…

“碳”零排放是什么意思

在气候变化问题上拖拖拉拉之后,澳大利亚联邦政府终于承诺到 2050 年实现净零排放,世界其他大部分地区也是如此。几乎所有发达经济体现在都加强了 2030 年目标,并承诺在本十年将排放量大致减半。 需要记住的重要一点是,如果没有本…

abbyy finereader2023泰比文字识别PDF编辑软件

近年来,随着盲人数字阅读的普及推广,PDF格式的电子书越来越受到大家的关注和喜爱,但受读屏软件功能的限制,扫描版的PDF电子书是无法直接阅读的,这就需要将其转换为可阅读的文档格式,可对于大多数视障读者来…

Linux基本指令1

系统内核:Centos 7.6 64位操作系统(OS, operating system)是什么?世界上第一台计算机诞生的时候是没有操作系统的,但是这个计算机操作起来效率特别低,难度非常高。使用对象只有科学家。操作系统的意义就在于降低操作难度&#…

数据库高级 V

数据库高级 V 1.JVM内存结构,JVM调优,GC常用算法 如何调整堆内存大小,以及调整各年代之间的比例,更换GC 修改JVM堆大小方式: 找到Idea安装目录下的-->bin-->idea.exe.vmoptions -server -Xms128m //堆初始大小 -Xmx512m //最大堆内存 -XX:ReservedCodeCacheSize240m -XX…

[附源码]计算机毕业设计JAVA花卉销售管理系统

[附源码]计算机毕业设计JAVA花卉销售管理系统 项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybati…

Linux umask命令详解,Linux修改文件默认访问权限

「作者主页」:士别三日wyx 「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 umask命令一、查看umask值二、临时修改umask值三、永久修改umask值四、文件和目录的默认权限五、权限数值对照表六、常用umask值及对应权限七…

最近公共祖先(朴素法、倍增法、(递归法))

目录 一、前言 二、题一:二叉树的最近公共祖先 1、上链接 2、基本思路 (1)朴素法 (2)LCA倍增法。 3、朴素法代码 (1)C(AC) (2)python&am…

1.2 极限的性质【极限】

1.2 极限的性质【极限】 1.2.1 唯一性 极限的唯一性 引入 假设警察逮捕罪犯,把犯人追到了悬崖边上,那么犯人只能在悬崖边束手就擒,这个时候悬崖边是犯人逃跑的极限位置,别无去处,位置唯一。 考试或比赛的时候都努…

web前端开发技术纯静态 (12306官网 1页)

⛵ 源码获取 文末联系 ✈ Web前端开发技术 描述 网页设计题材,DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业 | 公司官网网站 | 企业官网 | 酒店官网 | 等网站的设计与制 | HTML期末大学生网页设计作业,Web大学生网页 HTML:结构 CSS&#…

WebDriverManager自动管理浏览器Driver包

WebDriverManager是什么? WebDriverManager是一个开源 Java 库,它以全自动方式管理(即下载、设置和维护) Selenium WebDriver所需的驱动程序(例如,chromedriver、geckodriver、msededriver 等)…

【ASM】字节码操作 工具类与常用类 Printer、ASMifier、Textifier 介绍

文章目录 1.概述2. Printer2.1 class info2.2 fields2.3 constructors2.4 methods3. ASMifier与Textifier3.1 如何使用3.2 从命令行使用3.3 visit方法3.4 从代码中使用1.概述 在上一篇文章中:【ASM】字节码操作 工具类与常用类 TraceClassVisitor 介绍 我们知道了如何使用Tra…