精华内容
下载资源
问答
  • 如题 用vb 超精简计算器 只需一个textbox控件就可以搞定 数字全键盘输入 自动计算 用法 新建工程 添加一个text控件 在text的KeyPress事件下 粘贴代码即可
  • 一个vb做计算器程序,很适合初学者使用.欢迎下载啊,呵呵
  • 做一个简易计算器VB版)

    千次阅读 2020-02-22 20:47:46
    今天小编来带大家用VB做一个简易计算器 废话不多说,下面就是具体步骤了 1、创建控件组的方法首先创建一个命令按钮,调整其大小(觉得合适就行),名称为Command1,Caption 属性为数字 0 ;然后进行“复制”和“粘贴...

    今天小编来带大家用VB做一个简易计算器

    废话不多说,下面就是具体步骤了

    1、创建控件组的方法首先创建一个命令按钮,调整其大小(觉得合适就行),名称为Command1,Caption 属性为数字 0 ;然后进行“复制”和“粘贴”,当选择“粘贴”时,出现对话框提示已有一个同名控件,询问是否创建控件组,选择“是”后,即创建了一个名为“Command”的控件组。

    这时,第一个按钮的Index属性值默认为“0”,第二个的Index属性值自动设为“1”,并且大小与第一个按钮相同,只需修改其 Caption 属性为数字“1”并将其拖至合适位置即可。此后继续使用“粘贴”的方法建立其他控件组中其余按钮,共20个按钮,每建立一个,就将它拖到合适处,并修改相应的Caption属性值。

    2、各控件组其属性设置如下:

    在这里插入图片描述

    设置效果如下图所示:

    在这里插入图片描述

    将Text1中的Text中设置为0,Alignment设置为1-Right Justfiy,Enabled设置为False

    在这里插入图片描述

    二、编写代码

    Dim s1 As Single, s2 As Single, ysf As String
    ‘定义两个单精度数变量用与存放参与运算的数,一个字符型存放运算符
    Private Sub Command1_Click(Index As Integer)
    If Text1.Text = “0” Then
    Text1.Text = Command1(Index).Caption
    Else
    Text1.Text = Text1.Text & Command1(Index).Caption
    '将command1的单击事件与文本框显示的内容连接
    End If
    End Sub

    Private Sub Command2_Click()
    Text1.Text = Text1.Text + “.”
    If (InStr(Text1.Text, “.”) = 1) Then '第一位不能为小数
    Text1.Text = “”
    End If
    If InStr(Text1.Text, “.”) < Len(Text1.Text) Then '防止出现两个小数点
    Text1.Text = Left(Text1.Text, Len(Text1.Text) - 1)
    End If
    End Sub

    Private Sub Command3_Click(Index As Integer)
    s2 = Val(Text1.Text) '开始加减乘除运算
    Select Case ysf
    Case “+”
    Text1.Text = s1 + s2
    Case “-”
    Text1.Text = s1 - s2
    Case “*”
    Text1.Text = s1 * s2
    Case “/”
    If s2 = 0 Then
    MsgBox “分母不能为零!”
    Text1.Text = " "

    Else
    Text1.Text = s1 / s2
    End If
    End Select
    Text1 = IIf(Left(Text1.Text, 1) = “.”, 0 & Text1.Text, Text1.Text)
    '这个很关键,如果没有这个的话,得出小于1的小数前面没有0
    End Sub

    Private Sub Command4_Click(Index As Integer)
    If Text1.Text = " " Then '文本为空就结束
    Text1.Text = “0”

    ElseIf Len(Text1.Text) = “1” Then
    Text1.Text = “0”
    Else
    Text1.Text = Left(Text1.Text, Len(Text1.Text) - 1) '文本退一格
    End If
    End Sub

    Private Sub Command5_Click(Index As Integer)
    Text1.Text = " "
    End Sub

    Private Sub Command6_Click(Index As Integer)
    s1 = Val(Text1.Text) '将s1隐藏起来
    ysf = Command6(Index).Caption
    Text1.Text = “”
    End Sub

    Private Sub Command7_Click()
    If Left(Text1.Text, 1) <> “-” Then '判断作为负数
    Text1.Text = “-” & Text1.Text
    Else
    Text1.Text = Right(Text1.Text, Len(Text1.Text) - 1)
    End If
    End Sub

    Private Sub Command8_Click(Index As Integer)
    Text1.Text = Text1.Text * Text1.Text
    End Sub

    输完上述代码后的程序图片如下:

    在这里插入图片描述

    至此,我们完成了编程,调试一下以检验程序的正确性。一种可以右键“文件”,再点击“调试”,另一种是直接点击调试按钮。

    在这里插入图片描述

    工程完成后,点击文件,再点击该菜单下的生成“计算器.exe”(不同人的该选项大不相同,但是都有生成“xxx.exe”这个选项),如图

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    这样子就算生成成功啦

    展开全文
  • 人品计算器其实很简单,上网可以随便找到原理。主要是利用中文字符的ASCII原理。用mod运算就可以,有兴趣的可以自己做一个。我这个是用VB做的,挺简单供大家参考,参考
  • vb编的一个计算器

    2008-02-17 21:07:01
    用vs2005编的一个计算器,功能不全,只会一些简单的计算 不能累加计算
  • 含有源代码的VB程序计算器,里面内容丰富实用,和电脑上的计算器一个模式的
  • VB做计算器小程序

    2010-04-16 13:56:10
    一个VB做计算器小程序,仅供学习的思路开拓使用。
  • VB计算器 计算器代码 VB计算器代码

    热门讨论 2009-03-14 14:51:37
    这只是作者本人没事的时候一个计算器,大家可参考可批评
  • VB中能不能下拉数字选择框,带有一个计算器界面,有点类似电话拨号盘的效果?请问怎么实现?
  • vb计算器

    2011-11-14 22:51:55
    自己一个简单的vb计算器,计本功能都能实现!
  • 自己的一个vb作业,里边是一个计算器,为了交作业时间比较敢,有点粗糙但是麻雀虽小五脏俱全。,应付课程作业绝对够了。
  • 零基础做VB计算器

    2013-09-06 17:44:23
    自己做一个实用美观的VB实用计算器,有步骤,分阶段
  • 这是我的代码,请帮我看看哪有问题:(我是要用数组作个计算器) Option ExplicitDim shu1 As Double, shu2 As Double 先后输入的两个数Dim result As Double 了运算的结果Dim process, process0, process1, ...

    这是我的代码,请帮我看看哪有问题:(我是要用数组作个计算器)
     Option Explicit
    Dim shu1 As Double, shu2 As Double  '先后输入的两个数
    Dim result As Double     '做了运算的结果
    Dim process, process0, process1, process2, process3, process4 As Variant '保存数1与各个运算符的过程
    Dim judge As Variant    '判断按了那个运算符

    Private Sub Command1_Click(Index As Integer)   '0-9数字键
    Text1.Text = Text1.Text & Index
    Text1.SetFocus
    End Sub

    Private Sub Command1_KeyPress(Index As Integer, KeyAscii As Integer)    '阻止键盘输入,不过不知为什么没有用
    KeyAscii = 0
    End Sub

    Private Sub Command2_Click(Index As Integer)   ' "."键
    Text1.Text = Text1.Text & "."
    End Sub

    Private Sub Command3_Click()   '退格键
    If Text1.Text = "" Then
    Exit Sub
    End If
    Text1.Text = Left(Text1.Text, Len(Text1.Text) - 1)
    End Sub

    Private Sub Command4_Click()    '清除键
    Text1.Text = ""
    End Sub

    Private Sub Command5_Click(Index As Integer)    '做运算,总觉得逻辑上哪有问题
    shu1 = Val(Text1.Text)
    process = shu1
    Text1.Text = ""
     If judge = Command5(0) Then
    process0 = shu1 + Command(0)
     ElseIf judge = Command5(1) Then
    process1 = shu1 + Command5(1)
     ElseIf judge = Command5(2) Then
    process2 = shu1 + Command(2)
    ElseIf judge = Command5(3) Then
     process3 = shu1 + Command5(3)
     End If
    shu2 = Val(Text1.Text)
    End Sub

    Private Sub Command6_Click()    '等号
    result = process + shu2
    Text1.Text = result
    If process0 Then
    result = shu1 + shu2
    ElseIf process1 Then
    result = shu1 - shu2
    ElseIf process2 Then
    result = shu1 * shu2
    ElseIf process3 Then
    result = shu1 / shu2
    End If
    End Sub

    Private Sub Text1_Change()
    If judge = False Then
    shu2 = Val(Text1.Text)
    End If
    Text1.SetFocus
    End Sub

    展开全文
  • 计算器vb

    2008-06-08 10:16:00
    一个vb做计算器
  • VB计算器

    2007-08-17 02:38:36
    VB做一个功能较全的计算器
  • 这是一个计算机人民币张数的计算器.用VB做的第一个程序.
  • vb简易计算器

    2013-11-16 19:21:06
    1.学vb软件一开始要一个超级简单的计算器
  • 一个很实用的计算器,两种方式输入数据, 可随时修改,可直接输入算式计算。 用到了API、子类化技术。 适合vb初中级水平学习.
  • VB模仿Windows计算器.zip

    2020-02-22 18:19:18
    这是一个适合初学者入门做计算器的程序,拥有加减乘除、退格、清空以及平方,负数的功能,希望广大VB初学者多多练习!
  • (VB)计算器

    2008-04-01 10:55:00
    一个VB做计算器(第一版)能满足一般的加减乘除
  • 你在用VB做计算器吗?错误怎么处理

    千次阅读 2015-04-22 10:55:54
    我在高中时用VB语言完成过一个计算器程序,它叫Runner. 如果简单计算器只有在特殊情况下会出现错误: 显示错误. 除0; 运算的数字过大,过小. 显示错误由于VB的文本框全权由自己管理,你要防止用户不小心输入了两个...

    我在高中时用VB语言完成过一个计算器程序,它叫Runner.
    VB
    如果简单计算器只有在特殊情况下会出现错误:

    1. 显示错误.
    2. 除0;
    3. 运算的数字过大,过小.

    显示错误

    由于VB的文本框全权由自己管理,你要防止用户不小心输入了两个小数点.或者输入两个00在开头之类的.这种处理当时耗费了很长时间.幸得当时的计算机老师王老师所助,她为我找了不少代码,供我学习思考.我当时将文本框作为中间存储区.
    输入->过滤->文本框->运算赋值

    除0

    这是很容易想到的.我在做除法运算的时候,判断第二个除数是否为0,如果是0,则弹出错误窗口.然后不执行结果.
    (回想当年对程序的设计,就仿佛在刚才(~ o ~)~)

    运算数字过大或者过小

    解决方案:

    1限制输入:

    限制文本框最大接收文本.可以达到这个目的.但是不想废除连算功能.
    在连算比如:多次平方后还是可以爆掉.

    2如果检测到上一次结果达到了最大运算平方的根.

    那么弹出错误窗口.然后不执行结果.

    更好的解决方案是通过异常机制来完成.
    以下代码来自百度问答

    Private Sub Command1_Click()
        Dim A As Integer
    
        '截获错误
        On Error GoTo Err1
    
        'A为整型变量赋值40000会溢出
        A = 40000  '这时会跳到Err1处执行错误处理
    
        '给A重新赋值并消息提示A
        A = 30000
        MsgBox A
    
        Exit Sub
    
    '错误处理
    Err1:
        MsgBox "出错了!" & vbCrLf & "错误编号:" & Err.Number & " 错误描述:" & Err.Description
    
        '返回出错语句的下一句继续执行余下的代码
        Resume Next
    End Sub
    展开全文
  • 一个VB做的简单的计算器,课设通过资料,还有论文,需要帮助找我
  • 用CodeDom、Reflection做一个简易计算器

    千次阅读 2004-08-04 15:27:00
    将代码粘贴到一个VB文件即可运行。我这里只是给出一种思路,按这种思路,可以做出一个强劲的计算器,也可以做出一个代码测试器或者是练习器。 Option Strict OffImports System.IOImports System.CodeDom....

     

    将代码粘贴到一个VB文件即可运行。我这里只是给出一种思路,按这种思路,可以做出一个强劲的计算器,也可以做出一个代码测试器或者是练习器。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

     

    Option Strict Off

    Imports System.IO

    Imports System.CodeDom.Compiler

    Imports System.Reflection

     

    Namespace LzmTW.Test

        Public Class frmCal

            Inherits System.Windows.Forms.Form

     

            Private Code As New CodeBuilder

            Private myMode As Mode

     

    #Region " Windows 窗体设计器生成的代码 "

     

            Public Sub New()

                MyBase.New()

     

                '该调用是 Windows 窗体设计器所必需的。

                InitializeComponent()

     

                ' InitializeComponent() 调用之后添加任何初始化

     

            End Sub

     

            '窗体重写 dispose 以清理组件列表。

            Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)

                If disposing Then

                    If Not (components Is Nothing) Then

                        components.Dispose()

                    End If

                End If

                MyBase.Dispose(disposing)

            End Sub

     

            'Windows 窗体设计器所必需的

            Private components As System.ComponentModel.IContainer

     

            '注意: 以下过程是 Windows 窗体设计器所必需的

            '可以使用 Windows 窗体设计器修改此过程。

            '不要使用代码编辑器修改它。

            Friend WithEvents tbCode As System.Windows.Forms.TextBox

            Friend WithEvents tbResult As System.Windows.Forms.TextBox

            Friend WithEvents btnCal As System.Windows.Forms.Button

            Friend WithEvents tbReturnPara As System.Windows.Forms.TextBox

            Friend WithEvents Label1 As System.Windows.Forms.Label

            Friend WithEvents Label2 As System.Windows.Forms.Label

            Friend WithEvents tbSub As System.Windows.Forms.TextBox

            Friend WithEvents Label3 As System.Windows.Forms.Label

            Friend WithEvents Label4 As System.Windows.Forms.Label

            Friend WithEvents Button1 As System.Windows.Forms.Button

            Private Sub InitializeComponent()

                Me.tbCode = New System.Windows.Forms.TextBox

                Me.tbResult = New System.Windows.Forms.TextBox

                Me.btnCal = New System.Windows.Forms.Button

                Me.tbReturnPara = New System.Windows.Forms.TextBox

                Me.Label1 = New System.Windows.Forms.Label

                Me.Label2 = New System.Windows.Forms.Label

                Me.tbSub = New System.Windows.Forms.TextBox

                Me.Label3 = New System.Windows.Forms.Label

                Me.Label4 = New System.Windows.Forms.Label

                Me.Button1 = New System.Windows.Forms.Button

                Me.SuspendLayout()

                '

                'tbCode

                '

                Me.tbCode.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _

                            Or System.Windows.Forms.AnchorStyles.Left) _

                            Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)

                Me.tbCode.Location = New System.Drawing.Point(8, 32)

                Me.tbCode.Multiline = True

                Me.tbCode.Name = "tbCode"

                Me.tbCode.ScrollBars = System.Windows.Forms.ScrollBars.Both

                Me.tbCode.Size = New System.Drawing.Size(584, 72)

                Me.tbCode.TabIndex = 0

                Me.tbCode.Text = "'给定半径,求周长和面积" & Microsoft.VisualBasic.ChrW(13) & Microsoft.VisualBasic.ChrW(10) & "Dim M(3)" & Microsoft.VisualBasic.ChrW(13) & Microsoft.VisualBasic.ChrW(10) & "M(0)=20" & Microsoft.VisualBasic.ChrW(13) & Microsoft.VisualBasic.ChrW(10) & "M(1)=M(0)*Math.PI*2" & Microsoft.VisualBasic.ChrW(13) & Microsoft.VisualBasic.ChrW(10) & "M(2)=Math.PI*Math.Pow(M(0),2)" & Microsoft.VisualBasic.ChrW(13) & Microsoft.VisualBasic.ChrW(10) & "D" & _

                "im Result" & Microsoft.VisualBasic.ChrW(13) & Microsoft.VisualBasic.ChrW(10) & "Result=""半径:"" + M(0).Tostring +vbcrlf+""周长:"" + M(1).ToString+vbcrlf +""" & _

                ":"" +M(2).Tostring" & Microsoft.VisualBasic.ChrW(13) & Microsoft.VisualBasic.ChrW(10) & "        " & Microsoft.VisualBasic.ChrW(13) & Microsoft.VisualBasic.ChrW(10) & "        " & Microsoft.VisualBasic.ChrW(13) & Microsoft.VisualBasic.ChrW(10) & "'打开Excel" & Microsoft.VisualBasic.ChrW(13) & Microsoft.VisualBasic.ChrW(10) & "Dim oExcel As ExcelObj" & Microsoft.VisualBasic.ChrW(13) & Microsoft.VisualBasic.ChrW(10) & "oExcel" & _

                ".Open" & Microsoft.VisualBasic.ChrW(13) & Microsoft.VisualBasic.ChrW(10) & "oExcel.GetData(Result)"

                '

                'tbResult

                '

                Me.tbResult.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _

                            Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)

                Me.tbResult.Location = New System.Drawing.Point(8, 360)

                Me.tbResult.Multiline = True

                Me.tbResult.Name = "tbResult"

                Me.tbResult.ScrollBars = System.Windows.Forms.ScrollBars.Both

                Me.tbResult.Size = New System.Drawing.Size(584, 64)

                Me.tbResult.TabIndex = 1

                Me.tbResult.Text = ""

                '

                'btnCal

                '

                Me.btnCal.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)

                Me.btnCal.Location = New System.Drawing.Point(448, 320)

                Me.btnCal.Name = "btnCal"

                Me.btnCal.Size = New System.Drawing.Size(120, 32)

                Me.btnCal.TabIndex = 2

                Me.btnCal.Text = "计算(&C)"

                '

                'tbReturnPara

                '

                Me.tbReturnPara.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles)

                Me.tbReturnPara.Location = New System.Drawing.Point(104, 112)

                Me.tbReturnPara.Name = "tbReturnPara"

                Me.tbReturnPara.Size = New System.Drawing.Size(152, 21)

                Me.tbReturnPara.TabIndex = 3

                Me.tbReturnPara.Text = "Result"

                '

                'Label1

                '

                Me.Label1.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles)

                Me.Label1.Location = New System.Drawing.Point(8, 112)

                Me.Label1.Name = "Label1"

                Me.Label1.Size = New System.Drawing.Size(72, 16)

                Me.Label1.TabIndex = 4

                Me.Label1.Text = "返回值参数"

                '

                'Label2

                '

                Me.Label2.Location = New System.Drawing.Point(8, 8)

                Me.Label2.Name = "Label2"

                Me.Label2.Size = New System.Drawing.Size(128, 16)

                Me.Label2.TabIndex = 5

                Me.Label2.Text = "主程序:"

                '

                'tbSub

                '

                Me.tbSub.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _

                            Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)

                Me.tbSub.Location = New System.Drawing.Point(8, 176)

                Me.tbSub.Multiline = True

                Me.tbSub.Name = "tbSub"

                Me.tbSub.ScrollBars = System.Windows.Forms.ScrollBars.Both

                Me.tbSub.Size = New System.Drawing.Size(584, 136)

                Me.tbSub.TabIndex = 6

                Me.tbSub.Text = "Class ExcelObj" & Microsoft.VisualBasic.ChrW(13) & Microsoft.VisualBasic.ChrW(10) & "   Private shared obj,Wb,Ws" & Microsoft.VisualBasic.ChrW(13) & Microsoft.VisualBasic.ChrW(10) & "   Public Shared Sub Open" & Microsoft.VisualBasic.ChrW(13) & Microsoft.VisualBasic.ChrW(10) & "       ob" & _

                "j=CreateObject(""Excel.Application"")" & Microsoft.VisualBasic.ChrW(13) & Microsoft.VisualBasic.ChrW(10) & "       obj.Visible = True" & Microsoft.VisualBasic.ChrW(13) & Microsoft.VisualBasic.ChrW(10) & "   End Sub" & Microsoft.VisualBasic.ChrW(13) & Microsoft.VisualBasic.ChrW(10) & "   P" & _

                "ublic Shared Sub GetData(Value)" & Microsoft.VisualBasic.ChrW(13) & Microsoft.VisualBasic.ChrW(10) & "       If Wb Is Nothing Then" & Microsoft.VisualBasic.ChrW(13) & Microsoft.VisualBasic.ChrW(10) & "          Wb=obj." & _

                "WorkBooks.Add " & Microsoft.VisualBasic.ChrW(13) & Microsoft.VisualBasic.ChrW(10) & "          Ws=Wb.WorkSheets.Add" & Microsoft.VisualBasic.ChrW(13) & Microsoft.VisualBasic.ChrW(10) & "       End If" & Microsoft.VisualBasic.ChrW(13) & Microsoft.VisualBasic.ChrW(10) & "       Ws.Cells(1" & _

                ",1)=Value" & Microsoft.VisualBasic.ChrW(13) & Microsoft.VisualBasic.ChrW(10) & "   End Sub" & Microsoft.VisualBasic.ChrW(13) & Microsoft.VisualBasic.ChrW(10) & "End Class"

                '

                'Label3

                '

                Me.Label3.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles)

                Me.Label3.Location = New System.Drawing.Point(8, 152)

                Me.Label3.Name = "Label3"

                Me.Label3.Size = New System.Drawing.Size(128, 16)

                Me.Label3.TabIndex = 7

                Me.Label3.Text = "函数:"

                '

                'Label4

                '

                Me.Label4.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles)

                Me.Label4.Location = New System.Drawing.Point(8, 336)

                Me.Label4.Name = "Label4"

                Me.Label4.Size = New System.Drawing.Size(128, 16)

                Me.Label4.TabIndex = 8

                Me.Label4.Text = "结果:"

                '

                'Button1

                '

                Me.Button1.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)

                Me.Button1.Location = New System.Drawing.Point(240, 320)

                Me.Button1.Name = "Button1"

                Me.Button1.Size = New System.Drawing.Size(120, 32)

                Me.Button1.TabIndex = 9

                Me.Button1.Text = "查看代码"

                '

                'frmCal

                '

                Me.AutoScaleBaseSize = New System.Drawing.Size(6, 14)

                Me.ClientSize = New System.Drawing.Size(600, 429)

                Me.Controls.Add(Me.Button1)

                Me.Controls.Add(Me.Label4)

                Me.Controls.Add(Me.Label3)

                Me.Controls.Add(Me.tbSub)

                Me.Controls.Add(Me.Label2)

                Me.Controls.Add(Me.Label1)

                Me.Controls.Add(Me.tbReturnPara)

                Me.Controls.Add(Me.btnCal)

                Me.Controls.Add(Me.tbResult)

                Me.Controls.Add(Me.tbCode)

                Me.Name = "frmCal"

                Me.Text = "简易代码计算器"

                Me.ResumeLayout(False)

     

            End Sub

     

    #End Region

     

            Private Sub btnCal_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCal.Click

                Code.Clear()

                Dim i As Int16

                For i = 0 To tbCode.Lines.Length - 1

                    Code.AppendCode(2, tbCode.Lines(i))

                Next

                Code.AppendCode(2, "Return " & Me.tbReturnPara.Text)

                Code.AppendCode(1, "End Function")

                Code.AppendCode()

                For i = 0 To tbSub.Lines.Length - 1

                    Code.AppendCode(2, tbSub.Lines(i))

                Next

                myMode = New Mode

                myMode.GetMode(Code.ToString)

                ' MsgBox(myMode.CodeString)

                Me.tbResult.Text = ""

                Me.tbResult.Text = myMode.CalResult

            End Sub

     

            Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

                If Not myMode Is Nothing Then

                    Me.tbResult.Text = ""

                    Me.tbResult.Text = myMode.CodeString

                End If

            End Sub

        End Class

        Public Class Mode

            Private Comp As ICodeCompiler = New VBCodeProvider().CreateCompiler

            Private cp As CompilerParameters = New CompilerParameters

            Private _Compiled As Object = Nothing

            Private mi As MethodInfo

            Private MyCode As CodeBuilder

            Public ReadOnly Property CodeString() As String

                Get

                    Return MyCode.ToString

                End Get

            End Property 'CodeString

            Sub New()

            End Sub

            Sub GetMode(ByVal ModeString As String)

                MyCode = New CodeBuilder

                With MyCode

                    .AppendCode("Imports System")

                    .AppendCode("Imports System.Data")

                    .AppendCode("Imports System.Math")

                    .AppendCode("Imports Microsoft.VisualBasic")

                    .AppendCode()

                    .AppendCode("Public Class DealMode")

                    .AppendCode("   Public Function GetM()")

                    .AppendCode(ModeString)

                    ' .AppendCode("   End Function")

                    .AppendCode("End Class")

                End With

            End Sub 'GetMode

            Public Function CalResult() As Object

                cp.ReferencedAssemblies.Add("System.dll")

                cp.ReferencedAssemblies.Add("System.Data.dll")

                cp.ReferencedAssemblies.Add("System.Xml.dll")

                cp.ReferencedAssemblies.Add("Microsoft.VisualBasic.dll")

                cp.GenerateExecutable = False

                cp.GenerateInMemory = True

                'dim CodeBuilding as

                Dim code As String

                code = MyCode.ToString

     

                Dim cr As CompilerResults = Comp.CompileAssemblyFromSource(cp, code)

                Debug.Write(code.ToString)

                If (cr.Errors.HasErrors) Then

     

                    Dim ErrorMessage As String

     

                    ErrorMessage = "编译错误:" & vbCrLf

                    Dim Err As CompilerError

                    For Each Err In cr.Errors

                        ErrorMessage = ErrorMessage & Err.ErrorText & vbCrLf

                    Next

                    Debug.WriteLine(ErrorMessage)

    #If DEBUG Then

                Stop

    #Else

                    Throw New Exception("编译错误: " + ErrorMessage)

    #End If

                End If

     

                Dim a As System.Reflection.Assembly = cr.CompiledAssembly

                _Compiled = a.CreateInstance("DealMode")

                mi = _Compiled.GetType().GetMethod("GetM")

                Return mi.Invoke(_Compiled, Nothing)

            End Function

     

        End Class 'Mode

        Public Class CodeBuilder

            Private _StringBuilder As System.Text.StringBuilder

            Private Const CodeFormat As String = "{0}{1}" & ControlChars.CrLf

            Sub New()

                _StringBuilder = New System.Text.StringBuilder

            End Sub

            Public Overloads Sub AppendCode()

                _StringBuilder.AppendFormat(CodeFormat, Space(0), Space(0))

            End Sub

            Public Overloads Sub AppendCode(ByVal CodeString As String)

                _StringBuilder.AppendFormat(CodeFormat, Space(0), CodeString)

            End Sub

            Public Overloads Sub AppendCode(ByVal CodeFloor As Integer, ByVal CodeString As String)

                _StringBuilder.AppendFormat(CodeFormat, Space(CodeFloor * 4), CodeString)

            End Sub

            Public Sub AppendFromFile(ByVal FileName As String)

                If Not System.IO.File.Exists(FileName) Then

                    MsgBox(FileName & "不存在.")

                    Exit Sub

                End If

                Dim tmpStr As String

                Dim fs As System.IO.FileStream

                fs = New System.IO.FileStream(FileName, IO.FileMode.Open, IO.FileAccess.Read, IO.FileShare.Read)

                Dim Reader As New System.IO.StreamReader(fs, System.Text.Encoding.Default)

                tmpStr = Reader.ReadToEnd

                Reader.Close()

                fs.Close()

                _StringBuilder.Append(tmpStr)

            End Sub

            Public Overrides Function ToString() As String

                Return _StringBuilder.ToString

            End Function

            Public Sub Clear()

                If _StringBuilder.Length > 0 Then _StringBuilder.Remove(0, _StringBuilder.Length - 1)

            End Sub

        End Class 'CodeBuilder

    End Namespace

     

    展开全文
  • VB.NET 计算器增强版

    2009-12-07 21:07:50
    初学VB.net 上次发了一个VB.net 2008 的计算器,这回对上次那个计算器进行了升级,增加了许多功能(有些功能其实对于计算器来说没有必要,但我只是为了学习VB.net,所以把常用的控件几乎都在这个计算器实现了一下!...
  • VB 简易 计算器 源码

    热门讨论 2010-08-26 03:46:49
    本程序使用VB语言编成,只使用了一个窗体模块,完成模仿市面简单计算器的功能。例如加减乘除,开方,求倒数,求百分比,并可连贯运算这些功能。…………  这个程序是依照计算机处理器内ALU处理数据的原理设计,...
  • VB 计算器代码 小程序

    2011-06-08 22:11:32
    一个VB做计算器的小程序。 挺全的,功能还可以,也挺全的。
  • VB.NET 计算器

    2010-05-07 22:02:10
    初学者的第一个实验。。。。我自己的,希望对大家有用~
  • 自己计算器,带有记录功能,有记录功能开关。功能较完善,第一个程序,多多指点。
  • 今天教大家怎么使用VB来制作款简单的小程序,矩形面积计算器。首先在新建工程界面选择标准EXE后点击打开按钮。然后将Form1属性窗口中的Caption值设置为:矩形面积计算器。在对象窗口中可以调节计算器界面的大小。...
  • 本程序使用VB语言编成,只使用了一个窗体模块,完成模仿市面简单计算器的功能。例如加减乘除,开方,求倒数,求百分比,并可连贯运算这些功能。…………  这个程序是依照计算机处理器内ALU处理数据的原理设计,...

空空如也

空空如也

1 2 3 4 5
收藏数 86
精华内容 34
关键字:

vb做一个计算器