vb.net小demo(计算器、文件处理等/C#也可看)
Demo1:使用窗体控件实现一个简易版计算器

Public Class Form1Private Sub Button_1_Click(sender As Object, e As EventArgs) Handles Button_1.ClickCalSubBox.Text += Button_1.TextEnd SubPrivate Sub Button_2_Click(sender As Object, e As EventArgs) Handles Button_2.ClickCalSubBox.Text += Button_2.TextEnd SubPrivate Sub Button_3_Click(sender As Object, e As EventArgs) Handles Button_3.ClickCalSubBox.Text += Button_3.TextEnd SubPrivate Sub Button_4_Click(sender As Object, e As EventArgs) Handles Button_4.ClickCalSubBox.Text += Button_4.TextEnd SubPrivate Sub Button_5_Click(sender As Object, e As EventArgs) Handles Button_5.ClickCalSubBox.Text += Button_5.TextEnd SubPrivate Sub Button_6_Click(sender As Object, e As EventArgs) Handles Button_6.ClickCalSubBox.Text += Button_6.TextEnd SubPrivate Sub Button_7_Click(sender As Object, e As EventArgs) Handles Button_7.ClickCalSubBox.Text += Button_7.TextEnd SubPrivate Sub Button_8_Click(sender As Object, e As EventArgs) Handles Button_8.ClickCalSubBox.Text += Button_8.TextEnd SubPrivate Sub Button_9_Click(sender As Object, e As EventArgs) Handles Button_9.ClickCalSubBox.Text += Button_9.TextEnd SubPrivate Sub Button_0_Click(sender As Object, e As EventArgs) Handles Button_0.ClickCalSubBox.Text += Button_0.TextEnd SubPrivate Sub Button_Add_Click(sender As Object, e As EventArgs) Handles Button_Add.ClickCalSubBox.Text += Button_Add.TextEnd SubPrivate Sub Button_Sub_Click(sender As Object, e As EventArgs) Handles Button_Sub.ClickCalSubBox.Text += Button_Sub.TextEnd SubPrivate Sub Button_Mul_Click(sender As Object, e As EventArgs) Handles Button_Mul.ClickCalSubBox.Text += Button_Mul.TextEnd SubPrivate Sub Button_Exc_Click(sender As Object, e As EventArgs) Handles Button_Exc.ClickCalSubBox.Text += Button_Exc.TextEnd SubPrivate Sub Button14_Click(sender As Object, e As EventArgs) Handles Button14.ClickCalSubBox.Text += "."End SubPrivate Sub Button_CE_Click(sender As Object, e As EventArgs) Handles Button_CE.ClickResultBox.Text = vbNullStringCalSubBox.Text = ""N_S = ""End SubPrivate Sub Button_C_Click(sender As Object, e As EventArgs) Handles Button_C.ClickResultBox.Text = vbNullStringCalSubBox.Text = ""N_S = ""End SubPublic Result As DoublePublic ErrMsg As String = "正无穷大"Private Sub Button_Equal_Click(sender As Object, e As EventArgs) Handles Button_Equal.ClickTryDim result = New DataTable().Compute(CalSubBox.Text, Nothing) '将一个表达式进行运算ResultBox.Text = result '将结果显示出来If (ErrMsg = ResultBox.Text) ThenResultBox.Text = "除数不能为0"End IfCatch ex As ExceptionMsgBox("无法计算:" & ex.Message)End TryDim Split_Str As String() = CalSubBox.Text.Split({"+"c, "-"c, "/"c, "*"c}) 'Split_Str是分割后的单个字符串DelZero(Split_Str)Console.WriteLine("新字符串:" & N_S)CalSubBox.Text = DelLastChar(N_S) '去掉最后一个字符,展示到文本框中End SubFunction DelLastChar(s As String)Return s.Substring(0, s.Length - 1)End FunctionFunction DelZero(ByVal StrArr As String())Dim Op_StrArr As String = GetOperateStr(CalSubBox.Text) '[+,-] 先获取整个字符串列表Dim Op_Str As StringFor i = 0 To StrArr.Length - 1 ' strArr实质上是分割后的单个字符串Console.WriteLine("第" & i + 1 & "次" & vbNewLine)Dim DelZero_S As String = StrArr(i).TrimStart({"0"c}) 'DelZero_S是抹零后的单个字符串、Console.WriteLine("抹零后:" & DelZero_S)If Not i = Op_StrArr.Length Then '最后一次不需要获取Op_Str = Op_StrArr(i) '获取当前的单个操作数,从字符串数组中获取End IfConsole.WriteLine("操作数:" + Op_Str)N_S += DelZero_S + Op_Str '将抹零的字符串 与 当前操作数拼接 '最后一次的单个操作数不变,用DelLastChar去掉即可Console.WriteLine("N_S:" & N_S)Console.WriteLine(" DelZero_S:" & DelZero_S)NextReturn N_SEnd FunctionFunction GetOperateStr(ByVal StrArr As String) '获取操作数,返回一个存放操作数的字符串数组Dim NewStrArr As String = ""For i = 0 To StrArr.Length - 1 '获取下标,从Index开始寻找第一个操作数,而不是重新开始If StrArr(i) = "+" Or StrArr(i) = "-" Or StrArr(i) = "*" Or StrArr(i) = "/" ThenNewStrArr += StrArr(i)End IfNextReturn NewStrArr '字符串数组[+,-,]End FunctionPrivate Sub Button_Backspace_Click(sender As Object, e As EventArgs) Handles Button_Backspace.ClickTryCalSubBox.Text = CalSubBox.Text.Substring(0, CalSubBox.Text.Length - 1) '回退一个字符:将字符串截取0,end-1赋值回去即可Catch ex As ExceptionMsgBox("发生错误:" & ex.Message)CalSubBox.Text = ""End TryEnd SubEnd Class
Demo2:对文件进行处理
要求:1.去掉当前文件的第一行
2.从第二行开始算,保留奇数行,去掉偶数行
3.将每一行的分隔符改为“/”
4.将每一行的2位和3位数字调换位置
5.将每一个数字保留2位小数
Imports System.IOModule Module1Sub Main()Dim fr As New StreamReader("E:\T4-2.txt") '这里存放要处理的文件路径Dim fw As New StreamWriter("C:\Users\Public\Desktop\T4-2-处理.txt") '写到桌面的fw流的路径Dim data As String = ""Dim data1 As String = ""Dim new_data As String = ""fr.ReadLine() '跳过第一行中文字体,相当于第0行While data <> " " 'data读奇数行,data1读偶数行,遇到空格行就退出data = fr.ReadLine() '读取第一/三/五...行数据,并把读的内容赋值给当前data(data每次循环都会被重新赋值)If data = Nothing Then Exit While '当data读到空格行就退出循环,下同new_data = replace_splitChar(data) '将读取的data替换字符并返回给新data,此时的新data可以被写出Console.WriteLine("newData:" + new_data)fw.WriteLine(new_data, True) '写出 (重写)data1 = fr.ReadLine() '跳过第二/四/六...行,If data1 = Nothing Then Exit While 'End Whilefr.Close()fw.Close()Console.WriteLine("已输出到桌面、按下任意键退出.....")Console.ReadKey()End SubFunction replace_splitChar(ByVal charStr As String)Dim new_str As String = "" '用一个新的Str来拼接/Dim new_str1 As String = ""Dim strArr As String() = charStr.Split(",") '分隔为字符串数组["110","23","12"]For Each s In strArr'把每个字符串保留两位小数Dim f_s = Double.Parse(s).ToString("0.00") 'f_s是保留两位小数的当前字符串new_str += f_s & "/" '拿到每一个字符串并拼接/ 赋值给新StrNext'交换的代码Dim strArr1 As String() = new_str.Split("/") '对newstr进行交换操作For i = 0 To new_str.Length - 1 'strArr就是字符串数组new_str1 = strArr1(0) + "/" + exchange(strArr(1), strArr(2)) + "/" + strArr1(3)NextReturn new_str1End FunctionFunction exchange(ByVal StrA As String, ByVal StrB As String) As String '将两个字符串进行交换位置的函数StrA = Double.Parse(StrA).ToString("0.00") '先转换再交换StrB = Double.Parse(StrB).ToString("0.00")Return StrB + "/" + StrAEnd FunctionEnd Module
Demo3:OPenDialog和SaveDialog对话框案例(包括ToolStripMenu)
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.ClickOpenFileDialog1.InitialDirectory = "D:\"OpenFileDialog1.Filter = "纯文本文件(*.txt)|*.txt|所有文件(*.*)|*.*"OpenFileDialog1.Title = "打开文件"' .RestoreDirectory = True '对话框关闭之前还原至当前目录If OpenFileDialog1.ShowDialog() = DialogResult.OK ThenfileName = OpenFileDialog1.FileName 'OpenFileDialog1已经拿到文件名了fr = New StreamReader(fileName) '创建fileReader流通过文件名来读取文件RichTextBox1.Text = fr.ReadToEnd() 'fr已经获取到文件的所有信息,使用ReadToEnd()获取其内容fr.Close()End IfEnd SubPrivate Sub 打开文件ToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles 打开文件ToolStripMenuItem.ClickOpenFileDialog1.InitialDirectory = "D:\"OpenFileDialog1.Filter = "纯文本文件(*.txt)|*.txt|所有文件(*.*)|*.*"OpenFileDialog1.Title = "打开文件"' .RestoreDirectory = True '对话框关闭之前还原至当前目录If OpenFileDialog1.ShowDialog() = DialogResult.OK ThenfileName = OpenFileDialog1.FileName 'OpenFileDialog1已经拿到文件名了fr = New StreamReader(fileName) '创建fileReader流通过文件名来读取文件RichTextBox1.Text = fr.ReadToEnd() 'fr已经获取到文件的所有信息,使用ReadToEnd()获取其内容fr.Close()End IfEnd Sub
相关文章:
vb.net小demo(计算器、文件处理等/C#也可看)
Demo1:使用窗体控件实现一个简易版计算器 Public Class Form1Private Sub Button_1_Click(sender As Object, e As EventArgs) Handles Button_1.ClickCalSubBox.Text Button_1.TextEnd SubPrivate Sub Button_2_Click(sender As Object, e As EventArgs) Handles …...
【vue3|第8期】深入理解Vue 3 computed计算属性
日期:2024年6月10日 作者:Commas 签名:(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释:如果您觉得有所帮助,帮忙点个赞,也可以关注我,我们一起成长;如果有不对的地方…...
《精通ChatGPT:从入门到大师的Prompt指南》附录C:专业术语表
附录C:专业术语表 本附录旨在为读者提供一本全面的术语表,帮助理解《精通ChatGPT:从入门到大师的Prompt指南》中涉及的各种专业术语。无论是初学者还是高级用户,这些术语的定义和解释将为您在使用ChatGPT时提供重要参考。 A AI&…...
YOLOv8可视化界面PYQT5
yolov8,可视化界面pyqt。支持图片检测,视频检测,摄像头检测等,实时显示检测画面。支持自定义数据集,计数,fps展示……,即插即用,无需更改太多代码...
远程代码执行和远程命令执行是一个东西吗
远程代码执行(Remote Code Execution,简称RCE)和远程命令执行在概念上有所区别,但两者都涉及到攻击者通过远程方式在目标系统上执行代码或命令。以下是两者的详细比较: 定义: 远程代码执行(RCE…...
C++ 20新特性之线程与jthread
💡 如果想阅读最新的文章,或者有技术问题需要交流和沟通,可搜索并关注微信公众号“希望睿智”。 为什么要引入jthread 在C 11中,已经引入了std::thread。std::thread为C标准库带来了一流的线程支持,极大地促进了多线程…...
赶紧收藏!2024 年最常见 20道并发编程面试题(七)
上一篇地址:赶紧收藏!2024 年最常见 20道并发编程面试题(六)-CSDN博客 十三、什么是线程局部存储(Thread-Local Storage)? 线程局部存储(Thread-Local Storage,简称TLS…...
HAL库开发--第一盏灯
知不足而奋进 望远山而前行 目录 文章目录 前言 学习目标 学习内容 需求 开发流程 项目创建 芯片配置 功能配置 时钟配置 项目配置 编写代码 编译测试 烧录失败解决 编辑 总结 前言 在嵌入式系统开发中,掌握HAL库开发流程、STMCubeMX配置过程以及…...
Linux C语言:变量的作用域和生命周期(auto、register、static和extern)
一、变量存储类型-auto 1、auto变量的说明 变量在程序中使用时,必须预先说明它们的存储类型和数据类型。 变量说明的一般形式是: <存储类型> <数据类型 > <变量名> ; <存储类型>是关键词auto、register、static和extern<…...
AI Stable diffusion 报错:稳定扩散模型加载失败,退出
可能是内存不够,看看你最近是加了新的大的模型,可以把你的stable-diffusion-webui\models\Stable-diffusion目录下的某个ckpt删除掉,可能ckpt太大,无法加载成功; Stable diffusion model failed to load, exiting 如图…...
[Python学习篇] Python循环语句
while 循环 语法: while 条件: 条件成立后会重复执行的代码 ...... 示例1:死循环 # 这是一个死循环示例 while True:print("我正在重复执行")示例2:循环指定次数 i 1 while i < 5:print(f"执行次数 {i}")…...
MongoDB 正则表达式
MongoDB 正则表达式 MongoDB 是一个流行的 NoSQL 数据库,它提供了强大的查询功能,包括对正则表达式的支持。正则表达式是一种强大的文本搜索工具,它允许用户根据特定的模式匹配和搜索字符串。在 MongoDB 中,正则表达式可以用于查…...
Django配置连接池:使用django-db-connection-pool配置连接池
一、该三方库文档使用 github地址: https://github.com/altairbow/django-db-connection-pool/blob/1.2.5/README_CN.mdhttps://github.com/altairbow/django-db-connection-pool/blob/1.2.5/README_CN.md1、选择指定版本,查看指定版本的文档和配置&am…...
SpringBoot整合钉钉实现消息推送
前言 钉钉作为一款企业级通讯工具,具有广泛的应用场景,包括但不限于团队协作、任务提醒、工作汇报等。 通过Spring Boot应用程序整合钉钉实现消息推送,我们可以实现以下功能: 实时向指定用户或群组发送消息通知。自定义消息内容…...
【机器学习】集成学习方法:Bagging与Boosting的应用与优势
🔥 个人主页:空白诗 文章目录 引言一、集成学习的定义二、Bagging方法1. 随机森林(Random Forest)2. 其他Bagging方法 二、Boosting方法1. 梯度提升树(Gradient Boosting Machine, GBM)解释GBM的基本原理和…...
工业 web4.0 的 UI 卓越非凡
工业 web4.0 的 UI 卓越非凡...
C语言 | Leetcode C语言题解之第145题二叉树的后序遍历
题目: 题解: void addPath(int *vec, int *vecSize, struct TreeNode *node) {int count 0;while (node ! NULL) {count;vec[(*vecSize)] node->val;node node->right;}for (int i (*vecSize) - count, j (*vecSize) - 1; i < j; i, --j)…...
如何在 Vue 3 中使用 vue3-print-nb 实现灵活的前端打印
你好,我是小白Coding日志,一个热爱技术的程序员。在这里,我分享自己在编程和技术世界中的学习心得和体会。希望我的文章能够给你带来一些灵感和帮助。欢迎来到我的博客,一起在技术的世界里探索前行吧! 前言 在前端开…...
Go Module详解
💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…...
基于51单片机的智能水表
一.硬件方案 本设计主要以51单片机作为主控处理器的智能水表,该水表能够记录总的用水量和单次用水量,当用水量超出设定值时系统发出声光报警提醒,水量报警值能够通过按键进行自行设置,并且存储于AT24C02中,并且可以测…...
观成科技:隐蔽隧道工具Ligolo-ng加密流量分析
1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具,该工具基于TUN接口实现其功能,利用反向TCP/TLS连接建立一条隐蔽的通信信道,支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式,适应复杂网…...
应用升级/灾备测试时使用guarantee 闪回点迅速回退
1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间, 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点,不需要开启数据库闪回。…...
iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版分享
平时用 iPhone 的时候,难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵,或者买了二手 iPhone 却被原来的 iCloud 账号锁住,这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...
质量体系的重要
质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络…...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...
Mobile ALOHA全身模仿学习
一、题目 Mobile ALOHA:通过低成本全身远程操作学习双手移动操作 传统模仿学习(Imitation Learning)缺点:聚焦与桌面操作,缺乏通用任务所需的移动性和灵活性 本论文优点:(1)在ALOHA…...
【从零学习JVM|第三篇】类的生命周期(高频面试题)
前言: 在Java编程中,类的生命周期是指类从被加载到内存中开始,到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期,让读者对此有深刻印象。 目录 …...
《Docker》架构
文章目录 架构模式单机架构应用数据分离架构应用服务器集群架构读写分离/主从分离架构冷热分离架构垂直分库架构微服务架构容器编排架构什么是容器,docker,镜像,k8s 架构模式 单机架构 单机架构其实就是应用服务器和单机服务器都部署在同一…...
react菜单,动态绑定点击事件,菜单分离出去单独的js文件,Ant框架
1、菜单文件treeTop.js // 顶部菜单 import { AppstoreOutlined, SettingOutlined } from ant-design/icons; // 定义菜单项数据 const treeTop [{label: Docker管理,key: 1,icon: <AppstoreOutlined />,url:"/docker/index"},{label: 权限管理,key: 2,icon:…...
python可视化:俄乌战争时间线关键节点与深层原因
俄乌战争时间线可视化分析:关键节点与深层原因 俄乌战争是21世纪欧洲最具影响力的地缘政治冲突之一,自2022年2月爆发以来已持续超过3年。 本文将通过Python可视化工具,系统分析这场战争的时间线、关键节点及其背后的深层原因,全面…...
