资讯动态

VB.NET快速入门:从零到一构建桌面应用,掌握事件驱动与控件开发

发布时间:2026/8/17 9:29:41 来源:尧图企业网站定制
1. 为什么今天还要学VB一个被低估的“生产力工具”如果你在2024年搜索“VB”大概率会看到两种声音一种是“VB早就过时了学它干嘛”另一种是“VB还能用吗”。作为一个从VB6时代一路走来的开发者我的看法是VB这里主要指经典的Visual Basic 6.0和现代的VB.NET远未到“入土”的时候它更像一个被遗忘在工具箱角落的“瑞士军刀”——在某些特定场景下它依然是解决问题最快、最直接的工具。今天我们就来聊聊如何快速上手这门语言让你在第一天就能用它做点有用的事。VB的核心价值在于其“快速应用开发”的基因。它的语法接近自然英语拖拽式界面设计直观得令人发指。对于非专业程序员比如财务、行政、实验室研究人员或者只是想写个小工具自动化日常重复工作的普通电脑用户VB的学习曲线远比C#、Java甚至Python平缓。你不需要理解复杂的面向对象理论不用被指针和内存管理搞得头大甚至不用搭建复杂的开发环境对于VB6而言。它的目标很纯粹让你用最少的代码最快地做出一个带窗口、带按钮、能处理数据的桌面程序。网络上大量的“VB控件查询手册”、“VB按钮”等搜索热词恰恰说明了至今仍有大量用户在维护、修改或寻找基于VB的解决方案尤其是在工业控制如“S7 200 VB寄存器用法”、硬件交互如“VB监听串口”和多媒体处理如“VB mcisendstring用法”等领域VB因其与Windows系统的深度集成和COM组件调用的便利性依然扮演着重要角色。所以第一天的目标不是成为VB专家而是建立信心用一两个小时亲手做出一个能运行、有交互的小程序感受一下“开发软件”的即时成就感。我们选择VB.NET作为起点因为它更现代开发环境Visual Studio易于获取且功能强大避免了VB6在新时代系统上可能遇到的兼容性问题如“VB安装一直在更新系统无响应”。2. 环境准备避开第一个坑——安装与项目创建工欲善其事必先利其器。我们的第一站是安装Visual Studio。这里有一个关键选择不要安装最新、最全的版本。对于初学者庞大的VS2022企业版不仅下载安装耗时其复杂的界面和众多用不到的功能反而会增加学习成本。我的建议是下载 Visual Studio Community 2022。这是微软提供的免费版本对个人开发者、开源项目和小型团队完全够用。安装时在“工作负载”选择界面你只需要勾选“.NET 桌面开发”这一项。这个工作负载包含了我们开发VB.NET Windows窗体应用所需的一切.NET SDK、VB.NET语言支持、Windows窗体设计器。其他如ASP.NET、Azure、移动开发等负载一概不选这样可以极大缩短安装时间和磁盘占用。安装过程可能会遇到“一直在更新系统无响应”的情况这通常与网络环境或系统后台服务有关。如果卡住可以尝试暂时关闭第三方杀毒软件和防火墙。以管理员身份运行安装程序。如果卡在特定组件可以取消安装重新运行安装程序选择“修改”有时跳过当前卡住的组件后续再单独安装更有效。安装完成后启动Visual Studio我们来创建第一个项目点击“创建新项目”。在搜索框输入“Windows 窗体应用”选择语言为“Visual Basic”模板选择“Windows 窗体应用(.NET Framework)”。请注意这里有两个类似的模板“.NET Framework”和“.NET”后者是.NET Core/.NET 5。对于初学者我强烈建议选择“.NET Framework”版本。原因在于.NET Framework版本更稳定第三方控件和教程资源尤其是那些涉及硬件、COM组件调用的兼容性更好网上搜索“vb控件查询手册”找到的代码绝大部分都是针对.NET Framework的。而新的“.NET”版本在跨平台方面有优势但某些传统Windows API调用方式略有不同初期容易造成混淆。为项目起个名字比如“MyFirstVBApp”选择好存放位置点击“创建”。至此你的开发环境就准备好了。Visual Studio会自动打开主界面中间是窗体设计器一个灰色的窗口右边是“解决方案资源管理器”可以看到你的项目文件左边是“工具箱”里面有很多可拖拽的控件如按钮、文本框。3. 第一个程序“Hello, World!”的现代交互版传统的“Hello, World!”只是在控制台打印文字太无趣了。我们要做一个带界面的。我们的目标是窗口上有一个按钮点击按钮旁边的标签就会显示“你好VB世界”。第一步认识界面与拖拽控件。在中间的窗体设计器里你已经看到了Form1。从左侧“工具箱”里找到“公共控件”分组。找到Button控件用鼠标点住它拖到Form1窗体上。你会看到一个按钮出现在窗体里。再找到一个Label控件同样拖到窗体上放在按钮旁边。 这就是VB可视化开发的精髓所见即所得。你拖上去的按钮和标签实际上就是程序运行时会显示的样子。第二步修改属性让界面更友好。在窗体设计器上点击你刚拖上去的Button1再看右下角的“属性”窗口如果没看到可以按F4键调出。找到Text属性它控制按钮上显示的文字。把它的值从“Button1”改成“点击我”。同样点击Label1控件在属性窗口找到Text属性把它清空因为我们希望初始时标签是空的。你还可以试试修改Font属性改变字体大小修改ForeColor改变文字颜色。属性窗口是定制控件外观和行为的主要场所。第三步编写第一行代码——事件驱动。VB是事件驱动语言。程序的大部分代码都是在“响应”某个事件比如“按钮被点击了”、“鼠标移动了”。现在我们要为按钮的点击事件写代码。 在窗体设计器上双击你刚刚创建的“点击我”按钮。神奇的事情发生了Visual Studio会自动切换到代码视图并为你创建好了一个名为Button1_Click的空方法。这个方法就是按钮的点击事件处理程序。Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click ‘ 在这里写代码 End Sub第四步让代码“干活”。我们的目标是点击按钮后标签显示文字。所以在Button1_Click方法内部我们输入一行代码Label1.Text 你好VB世界这行代码的意思是将Label1这个控件的Text属性设置为等号右边的字符串。在VB中单个等号就是赋值操作。第五步运行与调试。点击工具栏上绿色的“启动”按钮或按F5键。Visual Studio会编译并运行你的程序。你会看到一个独立的窗口弹出点击上面的“点击我”按钮旁边的标签果然显示了“你好VB世界”。恭喜你已经完成了第一个交互式VB程序。这个过程体现了VB的核心开发流程拖控件 - 设属性 - 写事件代码。比起其他语言要从零开始用代码画界面这种方式效率高太多了。4. 核心语法初探变量、数据类型与基础运算有了第一个程序的成就感我们现在需要回头补充一点必要的语法知识否则后续的代码会看不懂。别担心VB的语法以“易懂”著称。4.1 变量声明与数据类型变量就像一个个小盒子用来存放数据。在VB中声明变量通常使用Dim语句。Dim userName As String ‘ 声明一个名为userName的变量类型是字符串(String) Dim age As Integer ‘ 声明一个名为age的变量类型是整数(Integer) Dim price As Double ‘ 声明一个名为price的变量类型是双精度浮点数(Double)可带小数 Dim isDone As Boolean ‘ 声明一个名为isDone的变量类型是布尔值(Boolean)只有True或False声明后就可以给变量赋值了userName 张三 age 25 price 19.99 isDone True也可以声明的同时赋值Dim city As String 北京 注意关于Null搜索热词中有“vb null”这是一个重要的概念。在VB.NET中Nothing关键字用于表示对象变量没有引用任何对象或者值类型变量未被赋值对于可空类型。它类似于其他语言中的null。Dim obj As Object Nothing ‘ 表示obj不指向任何对象但是对于像Integer、Double这样的基本值类型它们不能直接赋值为Nothing除非声明为可空类型如Dim num As Integer? Nothing。初学者常见的错误是混淆“空字符串”和NothingDim s1 As String Nothing ‘ s1是Nothing Dim s2 As String ‘ s2是一个空的字符串对象不是Nothing在判断时应使用Is关键字If s1 Is Nothing Then ‘ 执行某些操作 End If4.2 基础运算与字符串连接算术运算和大多数语言一样Dim sum As Integer 10 5 ‘ 加法sum15 Dim diff As Integer 10 - 5 ‘ 减法 Dim product As Integer 10 * 5 ‘ 乘法 Dim quotient As Double 10 / 3 ‘ 除法quotient≈3.333... Dim remainder As Integer 10 Mod 3 ‘ 取模求余数remainder1字符串连接使用运算符虽然也可以用但为了清晰和避免意外类型转换强烈建议始终使用Dim greeting As String 你好 userName ‘ 如果userName是“张三”则greeting是“你好张三”4.3 与用户交互MessageBox和InputBox除了用标签显示我们还可以用更标准的方式与用户交互。MessageBox.Show(): 弹出一个消息框。MessageBox.Show(操作已完成, 提示, MessageBoxButtons.OK, MessageBoxIcon.Information)这段代码会弹出一个标题为“提示”内容为“操作已完成”带有一个“确定”按钮和信息图标的对话框。InputBox(): 弹出一个输入框让用户输入文本。Dim userInput As String InputBox(请输入您的姓名, 输入) If userInput Then ‘ 判断用户是否输入了内容非空字符串 Label1.Text 欢迎 userInput End If现在你可以改造一下第一个程序在按钮点击事件里弹出一个输入框让用户输入名字然后将欢迎语显示在标签上。动手试试吧5. 控件进阶处理“支持鼠标滚轮”与常见控件属性在搜索热词中“vb应用程序 支持鼠标滚轮”是一个很实际的需求。在VB.NET的Windows窗体应用中默认情况下如果窗体上的内容比如一个多行文本框TextBox或者一个列表ListBox超出了显示区域是需要用户用鼠标拖动滚动条来查看的。而“支持鼠标滚轮”意味着用户可以直接滚动鼠标滚轮来浏览内容体验更好。5.1 让控件响应鼠标滚轮实际上对于标准的TextBox、ListBox、DataGridView等控件当它们获得焦点即被选中时通常已经支持鼠标滚轮滚动了。问题往往出现在这些控件被放置在一个容器如Panel、GroupBox中并且容器没有正确处理滚轮消息。如果你发现鼠标滚轮无效可以按以下步骤排查和解决确保控件可获得焦点运行程序用鼠标点击一下那个文本框或列表让它的边框出现表示获得焦点然后再尝试滚动滚轮。处理容器的滚轮事件如果控件在一个Panel里且Panel的大小限制了控件显示你需要为Panel的MouseWheel事件编写代码将滚轮消息“传递”给其内部的控件。Private Sub Panel1_MouseWheel(sender As Object, e As MouseEventArgs) Handles Panel1.MouseWheel ‘ 将滚轮事件传递给Panel内第一个能处理它的控件 Dim ctrl As Control Panel1.GetChildAtPoint(Panel1.PointToClient(Cursor.Position)) If ctrl IsNot Nothing Then ‘ 模拟一个滚轮事件发给该控件 Dim args As New MouseEventArgs(e.Button, e.Clicks, e.X - ctrl.Left, e.Y - ctrl.Top, e.Delta) ctrl.OnMouseWheel(args) End If End Sub这段代码稍复杂但原理是当鼠标在Panel1上滚动时找到鼠标位置下的子控件并将滚轮事件转发给它。对于初学者一个更简单粗暴但有效的办法是将Panel的AutoScroll属性设置为True。这样当子控件超出Panel范围时Panel会自动出现滚动条并且这个滚动条通常能响应鼠标滚轮。5.2 常用核心控件属性与方法速查了解控件的关键属性能让你更自如地操控它们。下面以TextBox文本框和Button按钮为例TextBox(文本框)Text: 获取或设置框中显示的文本。TextBox1.Text 内容。Multiline: 是否允许多行文本。设为True后才能显示多行。ReadOnly: 是否只读。设为True后用户不能编辑但可以选中复制。PasswordChar: 设置密码掩码字符如设为*则输入任何字符都显示为*。Clear(): 方法清空文本框内容。TextBox1.Clear()。AppendText(): 方法在现有文本后追加内容。TextBox1.AppendText(新的一行 vbCrLf)vbCrLf是换行符。Button(按钮)Text: 按钮上显示的文字。Enabled: 按钮是否可用。设为False时按钮变灰无法点击。Visible: 按钮是否可见。PerformClick(): 方法以编程方式“点击”按钮触发其Click事件。Button1.PerformClick()。掌握这些基础你就能做出有基本交互功能的界面了。试着做一个简单的登录框两个文本框一个用于用户名一个用于密码设置PasswordChar两个按钮“登录”和“取消”点击“登录”后检查输入内容暂时可以写死一个用户名密码进行对比并用MessageBox弹出提示。6. 实战小项目简易文本编辑器让我们把前面学到的所有东西组合起来做一个真正有点用的小程序一个简易的文本编辑器。它能打开文本文件、编辑、保存还能改变字体。6.1 界面搭建在窗体上拖拽以下控件并设置属性一个MenuStrip控件在“菜单和工具栏”分组里。拖到窗体上后它会在顶部。点击它输入“文件(F)”然后在其下添加子项“新建(N)”、“打开(O)”、“保存(S)”、“-”分隔符、“退出(X)”。再添加一个“格式(O)”菜单下面加一个“字体(F)”。符号用于定义快捷键AltF等。一个RichTextBox控件在“公共控件”分组里。把它拖到窗体中将其Dock属性设置为Fill这样它会填满整个窗体客户区。RichTextBox比普通的TextBox功能更强支持富文本。一个OpenFileDialog控件和一个SaveFileDialog控件在“对话框”分组里。拖到窗体任意位置它们会在设计器下方显示因为是非可视化控件。分别改名为OpenFileDialog1和SaveFileDialog1。设置它们的Filter属性为“文本文件|.txt|所有文件|.*”这样打开对话框时默认筛选文本文件。一个FontDialog控件拖下来命名为FontDialog1。6.2 编写菜单功能代码双击各个菜单项进入其Click事件处理程序。“新建”菜单Private Sub 新建NToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles 新建NToolStripMenuItem.Click If RichTextBox1.Modified Then ‘ 如果内容有修改提示保存 Dim result As DialogResult MessageBox.Show(当前内容已修改是否保存, 提示, MessageBoxButtons.YesNoCancel) If result DialogResult.Yes Then ‘ 调用保存功能 保存SToolStripMenuItem.PerformClick() ElseIf result DialogResult.Cancel Then Return ‘ 用户取消不执行新建 End If End If RichTextBox1.Clear() Me.Text 简易文本编辑器 - 无标题 ‘ 修改窗口标题 RichTextBox1.Modified False End Sub这里引入了Modified属性用于跟踪文本内容是否被修改过以及DialogResult枚举用于判断用户点了消息框的哪个按钮。“打开”菜单Private Sub 打开OToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles 打开OToolStripMenuItem.Click ‘ 先检查当前内容是否需要保存代码同上可提取为独立方法此处为简化直接判断 If RichTextBox1.Modified Then ‘ ... 保存提示代码 ... End If If OpenFileDialog1.ShowDialog() DialogResult.OK Then Try RichTextBox1.LoadFile(OpenFileDialog1.FileName, RichTextBoxStreamType.PlainText) Me.Text 简易文本编辑器 - OpenFileDialog1.FileName RichTextBox1.Modified False Catch ex As Exception MessageBox.Show(打开文件时出错 ex.Message, 错误, MessageBoxButtons.OK, MessageBoxIcon.Error) End Try End If End SubShowDialog()方法会弹出“打开文件”对话框如果用户点击了“打开”返回OK我们就用RichTextBox的LoadFile方法加载文件。Try...Catch用于捕获并处理可能出现的异常如文件被占用、格式不支持等。“保存”菜单Private Sub 保存SToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles 保存SToolStripMenuItem.Click If String.IsNullOrEmpty(OpenFileDialog1.FileName) Then ‘ 如果是新文件还没有文件名则调用“另存为” 另存为ToolStripMenuItem.PerformClick() Else Try RichTextBox1.SaveFile(OpenFileDialog1.FileName, RichTextBoxStreamType.PlainText) RichTextBox1.Modified False MessageBox.Show(保存成功, 提示) Catch ex As Exception MessageBox.Show(保存文件时出错 ex.Message, 错误, MessageBoxButtons.OK, MessageBoxIcon.Error) End Try End If End Sub这里判断了OpenFileDialog1.FileName是否为空来决定是直接保存还是弹出“另存为”对话框。你需要先添加一个“另存为”菜单项并编写其事件代码与“保存”类似但总是弹出SaveFileDialog。“字体”菜单Private Sub 字体FToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles 字体FToolStripMenuItem.Click FontDialog1.Font RichTextBox1.Font ‘ 将当前字体设为对话框初始值 If FontDialog1.ShowDialog() DialogResult.OK Then RichTextBox1.Font FontDialog1.Font ‘ 应用用户选择的字体 End If End Sub“退出”菜单Private Sub 退出XToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles 退出XToolStripMenuItem.Click Me.Close() ‘ 关闭窗体结束程序 End Sub6.3 运行与体验按下F5运行。现在你有了一个可以新建、打开、编辑、保存文本文件并能修改字体的小编辑器了。虽然功能简陋但它完整地演示了VB.NET程序的事件驱动模型、常用控件的使用、文件对话框的操作以及基本的错误处理。通过这个练习你已经跨过了“入门”的门槛能够用VB组织逻辑、处理用户交互了。第一天的时间从认识VB的价值到搭建环境再到完成两个从简到繁的程序信息量不小。关键在于动手去试去改代码去触发错误然后解决它。VB的即时反馈特性非常适合这种学习方式。当你看到自己拖拽出来的界面按照编写的逻辑运行时那种掌控感是学习编程最好的动力。接下来你可以尝试为这个编辑器添加更多功能比如查找替换、状态栏显示行号、或者尝试连接一个数据库Access或SQLite来做简单的数据管理那将是另一个有趣的开始了。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价