vb.net小demo(计算器、文件处理等/C#也可看)

Demo1:使用窗体控件实现一个简易版计算器

在这里插入图片描述

Public Class Form1
    Private Sub Button_1_Click(sender As Object, e As EventArgs) Handles Button_1.Click
        CalSubBox.Text += Button_1.Text
    End Sub

    Private Sub Button_2_Click(sender As Object, e As EventArgs) Handles Button_2.Click
        CalSubBox.Text += Button_2.Text
    End Sub

    Private Sub Button_3_Click(sender As Object, e As EventArgs) Handles Button_3.Click
        CalSubBox.Text += Button_3.Text
    End Sub

    Private Sub Button_4_Click(sender As Object, e As EventArgs) Handles Button_4.Click
        CalSubBox.Text += Button_4.Text
    End Sub
    Private Sub Button_5_Click(sender As Object, e As EventArgs) Handles Button_5.Click
        CalSubBox.Text += Button_5.Text
    End Sub
    Private Sub Button_6_Click(sender As Object, e As EventArgs) Handles Button_6.Click
        CalSubBox.Text += Button_6.Text
    End Sub
    Private Sub Button_7_Click(sender As Object, e As EventArgs) Handles Button_7.Click
        CalSubBox.Text += Button_7.Text
    End Sub
    Private Sub Button_8_Click(sender As Object, e As EventArgs) Handles Button_8.Click
        CalSubBox.Text += Button_8.Text
    End Sub
    Private Sub Button_9_Click(sender As Object, e As EventArgs) Handles Button_9.Click
        CalSubBox.Text += Button_9.Text
    End Sub
    Private Sub Button_0_Click(sender As Object, e As EventArgs) Handles Button_0.Click
        CalSubBox.Text += Button_0.Text
    End Sub


    Private Sub Button_Add_Click(sender As Object, e As EventArgs) Handles Button_Add.Click
        CalSubBox.Text += Button_Add.Text

    End Sub

    Private Sub Button_Sub_Click(sender As Object, e As EventArgs) Handles Button_Sub.Click
        CalSubBox.Text += Button_Sub.Text
    End Sub

    Private Sub Button_Mul_Click(sender As Object, e As EventArgs) Handles Button_Mul.Click
        CalSubBox.Text += Button_Mul.Text
    End Sub

    Private Sub Button_Exc_Click(sender As Object, e As EventArgs) Handles Button_Exc.Click
        CalSubBox.Text += Button_Exc.Text
    End Sub
    Private Sub Button14_Click(sender As Object, e As EventArgs) Handles Button14.Click
        CalSubBox.Text += "."
    End Sub

    Private Sub Button_CE_Click(sender As Object, e As EventArgs) Handles Button_CE.Click
        ResultBox.Text = vbNullString
        CalSubBox.Text = ""
        N_S = ""
    End Sub

    Private Sub Button_C_Click(sender As Object, e As EventArgs) Handles Button_C.Click
        ResultBox.Text = vbNullString
        CalSubBox.Text = ""
        N_S = ""
    End Sub


    Public Result As Double
    Public ErrMsg As String = "正无穷大"
    Private Sub Button_Equal_Click(sender As Object, e As EventArgs) Handles Button_Equal.Click
        Try
            Dim result = New DataTable().Compute(CalSubBox.Text, Nothing) '将一个表达式进行运算
            ResultBox.Text = result '将结果显示出来

            If (ErrMsg = ResultBox.Text) Then
                ResultBox.Text = "除数不能为0"
            End If
        Catch ex As Exception
            MsgBox("无法计算:" & ex.Message)
        End Try

        Dim 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 Sub

    Function DelLastChar(s As String)
        Return s.Substring(0, s.Length - 1)
    End Function


    Function DelZero(ByVal StrArr As String())

        Dim Op_StrArr As String = GetOperateStr(CalSubBox.Text) '[+,-] 先获取整个字符串列表
        Dim Op_Str As String
        For 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 If

            Console.WriteLine("操作数:" + Op_Str)
            N_S += DelZero_S + Op_Str '将抹零的字符串 与 当前操作数拼接 '最后一次的单个操作数不变,用DelLastChar去掉即可


            Console.WriteLine("N_S:" & N_S)
            Console.WriteLine(" DelZero_S:" & DelZero_S)
        Next
        Return N_S
    End Function

    Function 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) = "/" Then
                NewStrArr += StrArr(i)
            End If
        Next
        Return NewStrArr '字符串数组[+,-,]
    End Function


    Private Sub Button_Backspace_Click(sender As Object, e As EventArgs) Handles Button_Backspace.Click

        Try
            CalSubBox.Text = CalSubBox.Text.Substring(0, CalSubBox.Text.Length - 1) '回退一个字符:将字符串截取0,end-1赋值回去即可
        Catch ex As Exception
            MsgBox("发生错误:" & ex.Message)
            CalSubBox.Text = ""
        End Try

    End Sub


End Class

Demo2:对文件进行处理

要求:1.去掉当前文件的第一行

2.从第二行开始算,保留奇数行,去掉偶数行

3.将每一行的分隔符改为“/”

4.将每一行的2位和3位数字调换位置

5.将每一个数字保留2位小数


Imports System.IO


Module Module1
    Sub 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 While
        fr.Close()
        fw.Close()
        Console.WriteLine("已输出到桌面、按下任意键退出.....")
        Console.ReadKey()
    End Sub

    Function 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 & "/" '拿到每一个字符串并拼接/ 赋值给新Str
        Next
        '交换的代码

        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)
        Next


        Return new_str1
    End Function

    Function 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 + "/" + StrA
    End Function


End Module

Demo3:OPenDialog和SaveDialog对话框案例(包括ToolStripMenu)

 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        OpenFileDialog1.InitialDirectory = "D:\"
        OpenFileDialog1.Filter = "纯文本文件(*.txt)|*.txt|所有文件(*.*)|*.*"
        OpenFileDialog1.Title = "打开文件"
        ' .RestoreDirectory = True '对话框关闭之前还原至当前目录
        If OpenFileDialog1.ShowDialog() = DialogResult.OK Then
            fileName = OpenFileDialog1.FileName 'OpenFileDialog1已经拿到文件名了
            fr = New StreamReader(fileName) '创建fileReader流通过文件名来读取文件
            RichTextBox1.Text = fr.ReadToEnd()  'fr已经获取到文件的所有信息,使用ReadToEnd()获取其内容
            fr.Close()
        End If
 End Sub
 
 Private Sub 打开文件ToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles 打开文件ToolStripMenuItem.Click
        OpenFileDialog1.InitialDirectory = "D:\"
        OpenFileDialog1.Filter = "纯文本文件(*.txt)|*.txt|所有文件(*.*)|*.*"
        OpenFileDialog1.Title = "打开文件"
        ' .RestoreDirectory = True '对话框关闭之前还原至当前目录
        If OpenFileDialog1.ShowDialog() = DialogResult.OK Then
            fileName = OpenFileDialog1.FileName 'OpenFileDialog1已经拿到文件名了
            fr = New StreamReader(fileName) '创建fileReader流通过文件名来读取文件
            RichTextBox1.Text = fr.ReadToEnd()  'fr已经获取到文件的所有信息,使用ReadToEnd()获取其内容
            fr.Close()
        End If

 End Sub

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

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

相关文章

使用RV1126交叉编译工具链交叉编译opencv,c++代码直接调用VideoCapture 读取摄像头数据

使用RV1126交叉编译工具链交叉编译opencv&#xff0c;rv1126直接调用VideoCapture 读取摄像头数据 前言环境一、ubantu安装二、交叉编译工具安装三、cmake升级四、ffmpeg安装五、opencv安装六、c代码测试&#xff08;上板运行&#xff09; 前言 交叉编译是一种将软件在操作系统…

超详解——​深入理解Python中的位运算与常用内置函数/模块——基础篇

目录 ​编辑 1.位运算 2.常用内置函数/模块 math模块 random模块 decimal模块 常用内置函数 3.深入理解和应用 位运算的实际应用 1.权限管理 2.位图 3.图像处理 2.math模块的高级应用 统计计算 几何计算 总结 1.位运算 位运算是对整数在内存中的二进制表示进行…

Android Uri转File path路径,Kotlin

Android Uri转File path路径&#xff0c;Kotlin /*** URI转化为file path路径*/private fun getFilePathFromURI(context: Context, contentURI: Uri): String? {val result: String?var cursor: Cursor? nulltry {cursor context.contentResolver.query(contentURI, null…

设计模式-创建型-04-建造者模式

1、盖房项目需求 1&#xff09;需要建房子&#xff1a;这一过程为打桩、砌墙、封顶2&#xff09;房子有各种各样的&#xff0c;比如普通房&#xff0c;高楼&#xff0c;别墅&#xff0c;各种房子的过程虽然一样&#xff0c;但是要求不要相同的3&#xff09;请编写程序&#xf…

模拟信号转RS-485/232,数据采集A/D转换模块 YL21

特点&#xff1a; ● 模拟信号采集&#xff0c;隔离转换 RS-485/232输出 ● 采用12位AD转换器&#xff0c;测量精度优于0.1% ● 通过RS-485/232接口可以程控校准模块精度 ● 信号输入 / 输出之间隔离耐压3000VDC ● 宽电源供电范围&#xff1a;8 ~ 32VDC ● 可靠性高&…

【Axure高保真原型】拖拉拽动态编辑可视化页面

今天和大家分享拖拉拽动态编辑可视化页面的原型模板&#xff0c;我们可以拖动左侧工具列表的图表&#xff0c;添加到页面&#xff0c;可以多次添加&#xff0c;添加后可以拖动图表的位置&#xff0c;或者鼠标移入图表后点击delete键删除多余的图表&#xff0c;案例中提供10中常…

我国间二甲苯零售规模逐渐扩大 进口量有所下滑

我国间二甲苯零售规模逐渐扩大 进口量有所下滑 间二甲苯&#xff08;MX&#xff09;又称为1,3-二甲苯&#xff0c;是苯的两个氢基被两个甲基取代后形成的一种有机化合物。间二甲苯的化学方程式为C8H10&#xff0c;多表现为一种无色透明的液体&#xff0c;不溶于水&#xff0c;但…

Pikachu上的CSRF以及NSSCTF上的[NISACTF 2022]bingdundun~、 [SWPUCTF 2022 新生赛]xff

目录 一、CSRF CSRF(get) login CSRF(post) CSRF Token 二、CSRF的相关知识点 &#xff08;1&#xff09;什么是CSRF&#xff1f; &#xff08;2&#xff09;工作原理 &#xff08;3&#xff09;CSRF漏洞形成的条件 1、用户要在登录状态&#xff08;即浏览器保存了该…

资源付费系统小程序APP公众号h5源码

&#x1f510; 揭秘“资源付费系统”&#xff1a;知识、技能与价值的交汇点 &#x1f48e; &#x1f31f; 引言&#xff1a;为何资源需要付费&#xff1f; 在数字化时代&#xff0c;我们周围充斥着大量的信息。但并非所有信息都具有同等的价值。其中&#xff0c;那些经过精心…

深度学习(四)——torchvision中数据集的使用

1. 参数详解 torchvision中每个数据集的参数都是大同小异的&#xff0c;这里只介绍CIFAR10数据集 该数据集的数据格式为PIL格式 class torchvision.datasets.CIFAR10(root:str,train:boolTrue,transform:Optional[Callable]None,target_transform:Optional[Callable]None,do…

Intel 8080接口与Motorola 6800接口定义与应用

本文介绍Intel 8080接口与Motorola 6800接口定义与应用。 Intel 8080接口与Motorola 6800接口是常用的并行总线接口&#xff0c;在MCU与外设直接的接口中经常用到&#xff0c;如MCU与LCD接口&#xff0c;MCU与FPGA之间的接口。本文介绍Intel 8080接口与Motorola 6800接口定义&…

R语言数据探索和分析23-公共物品问卷分析

第一次实验使用最基本的公共物品游戏&#xff0c;不外加其他的treatment。班里的学生4人一组&#xff0c;一共44/411组。一共玩20个回合的公共物品游戏。每回合给15秒做决定的时间。第十回合后&#xff0c;给大家放一个几分钟的“爱心”视频&#xff08;链接如下&#xff09;&a…

第一个Vue3.0应用程序

Vue 是一款用于构建用户界面的 JavaScript 框架。它基于标准 HTML、CSS 和 JavaScript 构建&#xff0c;并提供了一套声明式的、组件化的编程模型&#xff0c;帮助你高效地开发用户界面。无论是简单还是复杂的界面&#xff0c;Vue 都可以胜任。 1、准备工作 工欲善其事&#…

简单2招,学会文件粉碎!告别文件安全顾虑

在数字化时代&#xff0c;电脑文件中可能存储着大量的敏感信息&#xff0c;涉及个人隐私、财务数据等。为了更有效地保护这些信息不被滥用或泄露&#xff0c;我们需要更加安全的删除文件的方法。电脑文件粉碎是一种高级的文件删除技术&#xff0c;可以确保被删除的文件无法被恢…

多个协程操纵同一个数据2个锁【互斥锁】【读写锁】

golang中sync包实现了两种锁Mutex&#xff08;互斥锁&#xff09;和RWMutex(读写锁) 【1】互斥锁&#xff08;和上厕所一样&#xff0c;用的时候把门锁上&#xff0c;不用的时候把门给关上&#xff09; 其中Mutex为互斥锁&#xff0c;Lock()加锁&#xff0c;Unlock()解锁&#…

申请郑州水污染防治乙级资质,这些材料你需要提前准备

申请郑州水污染防治乙级资质时&#xff0c;你需要提前准备以下材料&#xff0c;以确保申请流程的顺利进行&#xff1a; 一、企业基本材料 企业法人营业执照副本复印件&#xff1a;需加盖企业公章&#xff0c;确保复印件清晰、完整。企业章程文本&#xff1a;提供企业章程的完整…

Map - LinkedHashSetMap源码解析

本文主要对Map - LinkedHashSet&Map 源码解析。立刀旁 Map - LinkedHashSet&Map源码解析 Java 7 - LinkedHashSet&Map 总体介绍方法剖析 get()put()remove()LinkedHashSetLinkedHashMap经典用法 # Java 7 - LinkedHashSet&Map # 总体介绍 如果你已看过前面关…

【git使用二】gitee远程仓库创建与本地git命令用法

目录 gitee介绍 管理者注册gitee账号 管理者在gitee网站上创建远程仓库 每个开发者安装git与基本配置 1.git的下载和安装 2.配置SSH公钥 3.开发者信息配置 git命令用法 gitee介绍 Gitee&#xff08;又称码云&#xff09;是一个基于Git的代码托管服务&#xff0c;由开源…

高考后的抉择:计算机相关专业的未来发展与前景探讨

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 目录 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌…

首个对LLMs应用于机器人任务中的量化研究

论文标题&#xff1a; Neural Scaling Laws for Embodied AI 论文作者&#xff1a; Sebastian Sartor, Neil Thompson 导读&#xff1a; 大模型研究愈发火热&#xff0c;大语言模型的Neural Scaling Laws&#xff08;神经标度律/神经缩放定律&#xff09;&#xff0c;即深度…