精华内容
下载资源
问答
  • FSO对象模型的应用VB中的应用 文件系统对象FSO英文全称是File System Object ,这种对象模型提出了有别于传统文件操作语句处理文件和文件夹方法。通过采用object.method这种在面向对象编程中广泛使用语法...
  • VB中应用DDE

    千次阅读 2014-02-09 10:09:25
    动态数据交换(dde)是windows应用程序间通讯基本方法之一,在动态数据交换过程,提供数据和服务的应用程序称为服务器,请求数据或服务的应用程序则称为客户。 dde交谈是由客户程序启动。如果得到服务器...

    【注意】在OLE和COM出现之前,DDE是两个windows程序之间通信的较好方式


    动态数据交换(dde)是windows应用程序间通讯的基本方法之一,在动态数据交换的过程中,提供数据和服务的应用程序称为服务器,请求数据或服务的应用程序则称为客户。

    dde交谈是由客户程序启动的。如果得到服务器程序的响应便可在两个应用程序之间建立起一条数据通道,开始进行信息的动态交换和传递。一个windows应用程序可以是一个程序的客户,同时也可以是另一个程序的服务器。本文将介绍如何用visual basic来编写dde服务器和客户程序。

    vb中的dde事件

    当动态数据交换启动时,会产生若干事件。通过响应这些事件,我们可以编写代码来处理动态数据交换时产生的问题。

    l         linkopen事件

    该事件在启动dde时产生,如果vb的窗体作为服务器,则该事件作用于窗体,响应该事件的过程为form—linkopen。如果是vb中的控件作为客户接收数据,则该事件作用于控件。通过响应linkopen事件可以在dde启动时作一些初始化的处理。

    l         linkclose事件

    该事件在关闭dde链接时产生。通过响应该事件可在dde关闭时作一些善后处理工作。

    l         linkerror事件

    该事件在进行动态数据交换中发生错误时产生。通过由事件处理过程的参数传递的错误代码,可以在事件过程中处理不同的故障。

    l         linkexecute事件

    该事件通常是作为服务器的程序在收到客户程序发送的命令时产生。服务器程序通过响应该事件来执行客户程序发送的命令。

    l         linknotify事件

    该事件发生在客户程序。只有dde链接是以通知链接方式进行时才会产生这个事件。在这种情况下,当服务器中的数据发生变化时,就会在客户程序中引发linknotify事件,告诉客户方源数据已经更新,客户方在响应linknotify事件时,可通过调用linkrequest方法请求将更新的数据发送过来。

    vb中dde的方法

    l         linkrequest方法

    该方法是客户程序用来请求服务器程序将更新了的数据发送过来。

    l         linkexecute方法

    该方法是客户程序用于向服务器程序发送执行命令时调用。通常会以服务器程序规定的命令字符串作为调用参数。

    l         linkpoke方法

    dde的交换可以是双向的。该方法用于由客户程序向服务器程序发送数据。

    l         linksend方法

    当dde所交换的数据是图形时,如果建立的是自动链接,则只要源图形中有一个象素发生变化也会引起一次发送整个图形的操作,这样一来就会大大地降低系统的性能。为此,可以在图形更新完毕时使用该方法将图形信息发出。

    vb中dde的属性

    l         linkmode属性

    该属性用于vb的窗体时可以决定该窗体是否是一个dde服务器的数据源。可设置的值有两个:none表示不作为dde的数据源,source表示作为dde的数据源。该属性用于控件时,将指定启动/关闭dde链接。可设置的值有四个:none表示关闭dde链接,automatic表示用自动方式启动dde链接,manual表示用手动方式启动dde链接,notify表示用通知方式启动dde链接。

    l         linktopic属性

    该属性用于客户程序中的控件,它指定dde服务器应用程序名及动态数据交换的主题。

    l         linkitem属性

    该属性用于客户程序中的控件。它指定dde实际传送的数据,通常是服务器程序中作为数据源的窗体里的一个控件名。

    l         linktimeout属性

    该属性用于客户程序中的控件。在dde中,服务器对于客户请求的响应时间是可变的。客户程序可以设置linktimeout属性来控制等待的时间,从而避免因服务器响应时间过长而产生错误。

     

     

    一、DDE会话基本设计

    ★发送方设置:

    ''注:Kj 代表窗体中发送 DDE 会话的某控件,如 TextBox、Label

    1.加入代码:

    Kj.LinkMode = 0

    Kj.LinkTopic = "收|Form1"  ‘文件名|窗体名

    Kj.LinkItem = "Text1"   ‘控件名

    Kj.LinkMode = Mode     ‘0(断开)    1(自动)  2(手动)   3(通知)

    2. 用“Kj.LinkPoke”        ‘发送源程序控件 kj 的字符 到 本程序的 Text1 中

    3. 用“Kj.LinkRequest”   ‘源程序将本程序 Text1字符取回 放入 kj

    4  用“Kj.LinkExecute Cmd”   ‘触发本标程序的 Form_LinkExecute 事件

    ★接收方设置:

    1.必须在设计状态下设置本程序的窗口:LinkMode = 1

    2.在 Form_LinkExecute 事件中接收发送程序发出的 DDE 会话消息

    二、DDE会话的事件 

    ▲LinkClose                      (事件)DDE 对话结束

    ▲LinkError(linkerr As Integer)  (事件)DDE 对话出错

    ▲LinkExecute(cmdstr As String, cancel As Integer)   (事件)

    当一个 DDE 对话中的命令字符串由一个接收端应用程序发出时而发生的

    ▲LinkOpen(cancel As Integer)    (事件)DDE 对话正在启动时

    ▲LinkNotify                  (事件)

    如果接收端控件的 LinkMode 属性被设置为 3(通知),当发送端已经改变了由 DDE 链接定义的数据时,此事件发生。

    三、DDE会话的有关属性 

    ▲LinkTimeout [ = Number]属性 返回或设置等待 DDE 响应消息的时间。

    缺省为 50(相当于 5 秒),

    最大等待时间长度为65,535个十分之一秒,或大约为 1 时 49 分钟

    ▲LinkItem [ = String]属性 返回或设置传给接收端的数据

    ▲LinkTopic [ = value]属性 对于接收端控件-返回或设置发送端应用程序和主题

    ▲LinkMode [ = Number]属性 DDE 会话方式

    ★对于 DDE 会话中用做目标的控件, Number 的设置值为:

    0vbLinkNone      无     无 DDE 交互。(缺省值)

    1vbLinkAutomatic 自动   每次链接数据改变,目标控件都要更新

    2vbLinkManual    手动   只有激活 LinkRequest 方法时,才更新目标控件。

    3vbLinkNotify    通知   链接数据改变时,会产生 LinkNotify 事件,但是只有在LinkRequest 方法激活时才会更新目标控件。

    ★对作为 DDE 会话源的窗体,number 的设置值为:

    0vbLinkNone(缺省值)  无     没有 DDE 交互。

    没有目标应用程序能够启动与源窗体的主题会话,没有应用程序能够向窗体放置数据。如果在设计时 LinkMode 为 0(无),在运行时不能将其改变为1(源)。

    1vbLinkSource          源     允许窗体上的任何 Label、PictureBox 或TextBox控件为与该窗体建立 DDE 会话的目标应用程序提供数据。

    如果存在这种链接,Visual Basic 在控件内容改变时会自动提醒目标应用程序。另外,目标应用程序能够向窗体上的 Label、PictureBox、TextBox 控件存放数据。如果设计时LinkMode为 1(源),运行时可以将它改为 0(无)也可以再改回来。

    返回一个代表包含该窗口的框架的 Window 对象,此属性为只读,只应用于Window 对象

    四、DDE会话的有关方法

    ▲LinkSend         (方法)

    在一次 DDE 对话中将 PictureBox 控件的内容传输到的接收端应用程序。

    ▲LinkExecute String (方法)

    DDE对话过程中将命令字符串发送给发送端应用程序

    ▲LinkPoke         (方法)

    DDE对话过程中将 Label、PictureBox 或 TextBox 控件的内容传送给发送端应用程序

    ▲LinkRequest      (方法)

    DDE 对话中请求发送端应用程序更新 Label、PictureBox 或 TextBox 控件中的内容

    ★如果 object 的 LinkMode 属性设置为自动( 1 或 vbLinkAutomatic),则源应用程序自动更新 object 而不需要 LinkRequest。

    ★如果 object 的 LinkMode 属性设置为手工(2 或 vbLinkManual),则只有使用LinkRequest 时源应用程序才更新 object。

    ★如果 object 的 LinkMode 属性设置为通知 Notify( 3 或 vbLinkNotify),则源端通过调用 LinkNotify 事件通知接收端已更改数据。然后接收端必须使用 LinkRequest 更新数据。设置一指示对象为可见或隐藏的值

    五、DDE会话的集合

    LinkedWindows 集合 

    ▲Count  (属性)    集合内成员的个数,此属性为只读

    ▲Parent (属性)    返回包含另一对象或集合的对象或集合,此属性为只读

    ▲VBE    (属性)    返回该 VBE 对象的根,此属性为只读。

    例  返回活动工程名称:Debug.Print Application.VBE.ActiveVBProject.Name

    ▲Add (component)  (方法)  将一个对象添加到集合。

    component 参数:

    vbext_ct_ClassModule 将一个类模块添加到集合。

    Vbext_ct_MSForm 将窗体添加到集合。

    vbext_ct_StdModule 将标准模块添加到集合。

    ▲Item(index)      (方法)返回集合中所索引的成员。

    index 参数可以是数值或包含对象标题的字符串。字符串必须和集合的 key 参数匹配。

    Key 参数:

    Windows           Caption 属性设置

    LinkedWindows     Caption 属性设置

    CodePanes         无唯一字符串与此集合相关。

    VBProjects        Name 属性设置

    VBComponents      Name 属性设置

    References        Name 属性设置

    Properties        Name 属性设置

    ▲Remove(component) (方法)从集合中删除一项

    component参数是必需的。

    对于 LinkedWindows 集合来说,是一个对象。

    对于 References 集合来说,是一个对类型库,或者对工程的引用。

    对于 VBComponents 集合来说,是一个枚举型的常数,它代表一个类模块、一个窗体,或者是一个标准模块。

    【例】六、DDE会话的 Link 操作示例

    1.本示例建立一个 Microsoft Excel 的 DDE 链接,将一些值放置到一个新工作单的第一行的单元里,并按照这些值画图。 LinkExecute 向 Microsoft Excel 发送激活工作单的命令,选择一些值并按照它们画图。

    Private Sub Form_Click()

    Dim Cmd, I, Q, Row, Z 声明变量。

        Chr(34) 定义引用标记。

        '' 创建一个含有 Microsoft Excel 宏指令的字串。

        Cmd "[ACTIVATE("SHEET1")]"

        Cmd Cmd "[SELECT("R1C1:R5C2")]"

        Cmd Cmd "[NEW(2,1)][ARRANGE.ALL()]"

        If Text1.LinkMode vbNone Then

            Shell("C:\Program Files\Microsoft Office\Office\EXCEL.EXE", 4)启动Excel

            Text1.LinkTopic "Excel|Sheet1" 设置连接主题。

            Text1.LinkItem "R1C1"            设置连接项目。

            Text1.LinkMode vbLinkManual      设置连接模式。

        End If

        For To 5

            Row I                                             '' 定义行号。

            Text1.LinkItem "RRow "C1"                   '' 设置连接项目。

            Text1.Text Chr(64 I)                            '' 将值放置在 Text 中。

            Text1.LinkPoke                                      '' 将值放入单元。

            Text1.LinkItem "RRow "C2"                   '' 设置连接项目。

            Text1.Text Row                                    '' 将值放置在 Text 中。

            Text1.LinkPoke                                      '' 将值放入单元。

        Next I

        on Error Resume Next

        Text1.LinkExecute Cmd  执行 Microsoft Excel 命令。

        MsgBox "LinkExecute DDE demo with Microsoft Excel finished.", 64

        End

    End Sub

     

    2.使用 LinkRequest 更新含有 Microsoft Excel 工作单中值的正文框的内容,计算机上必需正在运行着 Microsoft Excel

    Private Sub Form_Click()

        If Text1.LinkMode vbNone Then                         '' 测试连接模式。

            Text1.LinkTopic "Excel|Sheet1"                    '' 设置连接主题。

            Text1.LinkItem "R1C1"                             '' 设置连接项目。

            Text1.LinkMode vbLinkManual                       '' 设置连接模式。

            Text1.LinkRequest                                   '' 更新正文框内容。

        Else

            If Text1.LinkItem "R1C1Then

                Text1.LinkItem "R2C1"
                Text1.LinkRequest                               '' 
    更新正文框内容。

            Else

                Text1.LinkItem "R1C1"

                Text1.LinkRequest                               '' 更新正文框内容。

            End If

        End If

    End Sub

     

    3.LinkItem、LinkMode、LinkTopic 属性示例

    在这个例子中,每一次敲击鼠标都会使 Microsoft Excel 工作单中的单元更新 Visual Basic的 TextBox

    先启动 Microsoft Excel,打开一个新的名叫 Sheet1 的工作单,在第一列中放入一些数据。

    Private Sub Form_Click()

        Dim CurRow As String

        Static Row                                              '' 工作单的行数.

        Row Row 1                                           '' 增加行.

        If Row Then                                         '' 只第一次.

            '' 确保连接不是活动的.

            Text1.LinkMode 0

            '' 设置应用程序的名字和题目名.

            Text1.LinkTopic "Excel|Sheet1"

            Text1.LinkItem "R1C1"                             '' 设置 LinkItem.

            Text1.LinkMode 1                                  '' 设置 LinkMode 为自动.

        Else

            ''在数据项目中更新行.

            CurRow "RRow "C1"

            Text1.LinkItem CurRow                             '' 设置 LinkItem.

        End If

    End Sub

     

    【例】VB读DDE的简明例子。

    第一.创建一个工程,名称:Child,窗体名称:FrmChild,添加Text1

    Option Explicit

    Private Sub Form_LinkExecute(CmdStr As String, Cancel As Integer)

    Text1.Text = CmdStr

    Cancel = 0

    End Sub

    第二.创建新工程,名称:Main,窗体名称FrmMain,添加Text1

    Option Explicit

    Private Sub Text1_Change()

    Dim t As Long

    Text1.LinkMode = 0

    Text1.LinkTopic = "Child|frmChild" '注意此处的标题一定与连接的标题相同否则连接不成功

    Text1.LinkMode = 2

    Text1.LinkExecute Text1.Text

     t = Text1.LinkTimeout

    Text1.LinkTimeout = 1

    Text1.LinkMode = 0

    Text1.LinkTimeout = t

    End Sub

     

    【例】用DDE创建桌面快捷方式

    受"用DDE连接方法向开始菜单中添加快捷方式"一文的启发,我写了一个可以向桌面增加快捷方式的小程序。与调用Vb5stkit.dll或Vb6stkit.dll来建立快捷方式相比,最大的特点在于避免了对该DLL文件的依赖(并不是每一台Win9x的机上都有的这些文件的)。是不是很环保?

    原理:利用Text控件的DDE在系统开始菜单中添加一个快捷方式,然后将该快捷方式剪切到桌面上来。

    须解决的问题:取得系统开始菜单和桌面的路径。这其中当然免不了要调用到API的SHGetSpecialFolderLocation 和SHGetPathFromIDList 函数。

    实现步骤:

    1.新建工程;

    2.表单中增加一个文本框(txtLnk)及一个命令按钮(cmdMakeLnk);

    3.加入以下代码

    Option Explicit

    Const CSIDL_DESKTOP = &H0系统桌面

    Const CSIDL_PROGRAMS = &H2系统"开始-$#@62;程序"菜单

    Private Type SHITEMID

    cb As Long

    abID As Byte

    End Type

    Private Type ITEMIDLIST

    mkid As SHITEMID

    End Type

     

    Private DeclareFunction SHGetSpecialFolderLocation Lib "shell32.dll" (ByVal hwndOwner As Long, _

    ByVal nFolder As Long, pidl As ITEMIDLIST) As Long

    Private Declare Function SHGetPathFromIDList Lib  "shell32.dll" Alias "SHGetPathFromIDListA" _

    (ByVal pidl As Long, ByVal pszPath As String) As Long

    定义取得系统特定文件夹的路径的函数。

    Private Function GetSpecialfolder(CSIDL As Long) As String

    Dim lRet As Long

    Dim IDL As ITEMIDLIST

    Dim sPath As String

    lRet = SHGetSpecialFolderLocation(100, CSIDL, IDL)

    错误时返回非0

    If lRet = 0 Then

    sPath = Space$(512)

    lRet = SHGetPathFromIDList(ByVal IDL.mkid.cb, ByVal sPath)

    一定要删除末尾的 0字节。这在调用API时常常会遇到。

    GetSpecialfolder = Left$(sPath, InStr(sPath, Chr$(0)) - 1)

    Exit Function

    End If

    GetSpecialfolder = ""

    End Function

    Private Sub cmdMakeLnk_Click()

    Dim sProgramsPath As String

    Dim sDesktopPath As String

    sProgramsPath = GetSpecialfolder(CSIDL_PROGRAMS)

    sDesktopPath = GetSpecialfolder(CSIDL_DESKTOP)

    txtLnk.LinkTopic = "Progman|Progman"

    txtLnk.LinkMode = 2

    格式:

    "[AddItem($#@60;欲建立快捷方式的命令行(可以是文件夹)$#@62;,$#@60;快捷方式的名称$#@62; ,[快捷方式的图标文件],[第几个图标])]"

    注意:

    1由于文件名是字符串,所以必须加引号,也就是以下这行命令为什么们用了两个引号的原因

    2"快捷方式的图标文件"中所出现的路径及文件必须是8.3格式,不支持长文件名。

    下面假设为 C:\WINDOWS\CALC.EXE建立快捷方式

    txtLnk.LinkExecute "[AddItem(""C:\WINDOWS\CALC.EXE"",""计算器"" )]"

    将快捷方式移至桌面

    sProgramsPath = sProgramsPath & "\计算器.lnk"

    sDesktopPath = sDesktopPath & "\计算器.lnk"

    FileCopy sProgramsPath, sDesktopPath

    Kill sProgramsPath

    End Sub

    以上在Windows98ME + VB5VB6通过。

     

    【例】用DDE实现窗体防止运行多个实例并传递命令

    上网的朋友一定都用过网络蚂蚁(Net Ants)的吧?不知你在使用过程中有没有注意过,那就是如果你想调动两个“蚂蚁”为您效力是不可能的——它总会把新运行的关闭。这点在VB 中很容易实现:

    Private Sub Form_Load()

    If App.PrevInstance Then

    MsgBox "你已经运行这个应用程序了"

    End 退出新运行的程序

    End If

    End Sub

    这样如果你运行这个程序后在运行它,它会弹出一个消息框并拒绝再次运行。这非常容易。

    而“蚂蚁”程序的妙处就在于:在重复运行“蚂蚁”时它不仅拒绝运行,而且能把已经运行的“蚂蚁”激活,这样用上面的程序就无能为力了。但事实上实现拒绝运行并激活已运行的程序有多种方法:

    1、用FindWindow函数得到已经运行窗体的句柄(HWND),然后用SetActiveWindow等API函数将其激活。其缺点也很明显,那就是没法传递参数。

    2、用FindWindow函数得到已运行窗体的句柄后用SendMessage的方法给窗体传送一个自定义消息(附带参数),然后在窗体中拦截并进行处理,但这样做要修改窗体的标准消息处理程序,用在VC,BC或DELPHI编写的程序中还行,但在VB中工作量太大,并且容易发生“一般保护行错误”使VB崩溃,不太可取(当然,如果你有足够的信心和不怕崩溃的精神,也可以试一下 ^_^ )。

    3、使用DDE技术。

    所谓DDE技术,就是动态数据交换技术。也许你很奇怪,这与本文所讨论的内容有什么相干的?且听我慢慢讲来。

    为了实现拒绝运行并把已经运行的程序激活并实现各种功能,我们可以先用本文开头提到的方法,检测一下程序有没有被运行过,如果没有,就正常运行,如果已经被运行过,就打通与它的DDE通道,传给它一个(或一些)数据,然后由已经运行的程序对数据进行处理,再去实现各种“意想不到”的功能,这时也许就有人对这你的程序喊:“酷、酷……”

    好了,耳听为虚,眼见为实,下面让我们动点真格的。

    打开VB,新建一个工程,选择菜单中的“工程->工程1 属性”,把工程名称改为“P1”(我爱偷懒,能短则短 ^_^ ),把已有的一个窗体的“LinkTopic”属性改为“FormDDE”,把“LinkMode” 属性改为“1 - Source”,添加一个PictureBox控件作为DDE执行控件,命名为picDDE。然后添加一个 TextBox控件,命名为“txtInfo”,并把“MultiLine”属性设置为“True”,以便显示多行文本,作为 消息显示控件。

    最后在窗体代码区输入以下代码:

    Const COMMANDLINE = "CommandLine=" 还是为了省事,定义一个常量

    Private Sub Form_LinkExecute(CmdStr As String, Cancel As Integer)

    Static lngCount As Long

    Dim Info As String

    Info = txtInfo.Text   保留原有信息

    Select Case CmdStr  ‘CmdStrDDE程序传送过来的参数

      Case "Max"

       Me.WindowState = 2

       Info = Info + vbNewLine + "窗体已被最大化"

      Case "ShowTime"

       Info = Info + vbNewLine + "最后一次运行这个程序的时间是:" + Str(Now)

      Case "Count"

       lngCount = lngCount + 1

       Info = Info + vbNewLine + "你已经第" + Str(lngCount) + "次重复调用这个程序。" _

           + vbNewLine + "但怕您不多给工资,所以只运行了一个 ^_^"

    End Select

    If Left(CmdStr, Len(COMMANDLINE)) = COMMANDLINE Then

      Info = Info + vbNewLine + "新程序曾以命令行形式运行" + vbNewLine + "命令行为:" _

         + vbNewLine + Right(CmdStr, Len(CmdStr) - Len(COMMANDLINE))

    End If

    txtInfo.Text = Info   把信息显示出来

    Cancel = False  

    End Sub

    Private Sub LinkAndSendMessage(ByVal Msg As String)

    Dim t As Long

    picDDE.LinkMode = 0       注释:--

    picDDE.LinkTopic = "P1|FormDDE" 连接DDE程序并发送数据/参数

    picDDE.LinkMode = 2       |”为管道符,是“退格键”旁边的竖线,

    picDDE.LinkExecute Msg      不是字母或数字!

    t = picDDE.LinkTimeout  注释:--

    picDDE.LinkTimeout = 1  终止DDE通道。当然,也可以用别的方法

    picDDE.LinkMode = 0   这里用的是超时强制终止的方法

    picDDE.LinkTimeout = t  注释:--

    End Sub

    Private Sub Form_Load()

    If App.PrevInstance Then  程序是否已经运行

      Me.LinkTopic = ""   这两行用于清除新运行的程序的DDE服务器属性,

      Me.LinkMode = 0    否则在连接DDE程序时会出乱子的

      LinkAndSendMessage "Max"  注释:--

      LinkAndSendMessage "Count"  连接DDE接受程序并传送数据/参数

      LinkAndSendMessage "ShowTime"  注释:--

      If Command <> "" Then     如果有命令行参数,就传递过去

       LinkAndSendMessage COMMANDLINE + Command

      End If

      End             束新程序的运行

    End If

    End Sub

    测试一下:

    把工程“P1”编译成EXE文件(设名称为 P1.EXE )

    1、打开“我的电脑”,找到 P1.EXE 并执行。可以看到程序正常运行了。

    2、再运行一次,这次新程序没有运行成功,而原来运行的程序却被最大化了,而且文本框中有以下字符:

    窗体已被最大化

    你已经第 1次重复调用这个程序。

    但怕您不多给工资,所以只运行了一个 ^_^

    最后一次运行这个程序的时间是:00-2-6 7:11:01

    3、打开 MS-DOS方式 ,用命令行方式再次运行程序,如 “P1 How Are You?”

    这时原来运行的程序文本框中又多了几行字:

    窗体已被最大化

    你已经第 2次重复调用这个程序。

    但怕您不多给工资,所以只运行了一个 ^_^

    最后一次运行这个程序的时间是:00-2-6 7:14:32

    新程序曾以命令行形式运行

    命令行为:

    How Are You?

    OK,运行完全正确,然后你就可以把它应用的你的程序中了。

     

    dde及其在vb中的实现

    http://blog.163.com/shuangfeng_521/blog/static/200177372013128103329414/

    两个VB程序之交换数据的DDE工程

    DDE Server VB6 实现程序间通信(下载)

    http://download.csdn.net/detail/mokton/570138

     

    http://bbs.csdn.net/topics/40149928

     

    VB 利用DDE进程间通信,5行代码搞定方法虽然简单,但是找得却不容易,特此于大家共享。

    http://download.csdn.net/detail/sysdzw/1759069

     

     http://www.doc88.com/p-371433855719.html

    展开全文
  • VB列表框综合应用讲解列表框在我们电脑系统可以说无处不在比如下面专业开发工具。应用基本操作是:当用户点击添加按钮,则可以将左侧栏目中的项目添加到右侧列表,同时在右侧列表选择某一个项目删除...

    3f257eea8041785b48dcb4cb6da8c4c2.png

    VB学习有难题,就找跟我学VB!

    学习VB编程,提高工作效率和自身能力。

    04eae6c0fe3b1bf178ec7089107585c7.gif

    VB列表框综合应用讲解

    13e0f8c00ff24a1dc7eff2b2a8b912a9.png列表框在我们的电脑系统中可以说无处不在比如下面的专业开发工具。

    caf0ab6f05b5de13075cbc949499a6be.png

    应用基本的操作是:

    当用户点击添加按钮,则可以将左侧栏目中的项目添加到右侧的列表中,同时在右侧的列表中选择某一个项目删除后,则这个项目回归到左侧的列表框;

    点击全部添加按钮,则左侧项目全部添加到右侧,左侧一个也不留;同时点击全部删除按钮后,右侧的项目全部删除,回归到左侧的列表中。

    思考如何在VB中实现这一功能?

    5a4dbde58f0f4497cf0be927786357fb.png

    1、我们首先新建一个窗体,在上面添加上面相应的控件,修改相应的属性,窗体载入时,用列表框的additem方法先添加几个项目到列表框中。

    e55c9065f7c4c7b22a52c7680f3804c1.png

    2、当我们点击“remove”按钮时,右侧列表框中选择的“MySQL”项目,从list2中删除,添加到list1中;

    此事件代码如下:


    List1.AddItem List2.Text

    List2.RemoveItem List2.ListIndex


    615eb1ddf740d1f0864fee9df5e1daf0.png

    3、当我们点击“add all”按钮时,左侧列表框中所有的项目,从list1中删除,全部添加到list2中;

    此事件代码如下:


    For i = 0 To List1.ListCount - 1

    List2.AddItem List1.List(i)

    Next

    List1.Clear


    bc6f43fae5c8c6f1c4d86c836664fa89.png

    4、当我们点击“remove  all”按钮时,右侧列表框中所有的项目,从list2中删除,全部添加到list1中;

    此事件代码如下:


    For i = 0 To List2.ListCount - 1

    List1.AddItem List2.List(i)

    Next

    List2.Clear


    ef204637c1808b5c2d723040fbd8ee9c.png


    VB学习有问题,就找跟我学VB!

    大家在学习过程中有学习问题,可以长按识别添加老师微信号,学习问题耐心在线解答。

    a6ab564c4f7562241ca78466e4ad0595.png

    4b1431652644ea110259a22e3f71401b.png

          祝大家学习进步!

    展开全文
  • 在本文我将介绍如何使用VB.NET连接到MySQL数据库并且执行SQL语句(SELECT,UPDATE,DELETE),同时我会展示如何将MySQL连接器导入(connectors)到Visual Studio 2012。 使用代码  你须要从...
  • 很长时间以来,开发人员一直要求微软为VB增加更多线程功能——这一点在VB.NET终于实现了。VB6不支持创建VB.NET多线程EXE、DLL以及OCX。但这种措词容易引起误解,这是因为VB6支持执行多个单线程单元。一个...

     

    很长时间以来,开发人员一直要求微软为VB增加更多的线程功能——这一点在VB.NET中终于实现了。VB6不支持创建VB.NET多线程的EXE、DLL以及OCX。但这种措词容易引起误解,这是因为VB6支持执行多个单线程的单元。一个单元实际上是代码执行的场所而且单元的边界限制了外部代码对单元内部的访问。

    VB.NET支持创建自由线程的应用程序。这意味着多个线程可以访问同一个共享的数据集。本文将带领你了解VB.NET多线程的基本内容。

    虽然VB支持多个单线程的单元,但并不支持允许多个线程在同一个数据集上运行的自由线程模型。在很多情况下,产生一个运行后台处理程序的新线程会提高应用程序的可用性。一种很显然的情况就是当执行一个可能使窗体看起来停止响应的长过程时,你一定会想在窗体上放置一个取消按钮。

    解决方法

    由于VB.NET使用公共语言运行时(Common Language Runtime),它增强了很多新的特性,其中之一便是创建自由线程应用程序的能力。

    在VB.NET中,开始使利用线程进行工作是很容易的。稍后我们会探究一些精妙之处,我们先创建一个简单的窗体,它生成一个执行后台处理程序的新线程。我们需要做的第一件事是将要在新线程上运行的后台处理程序。下面的代码执行一个相当长的运行过程——一个无限循环:

    1. Private Sub BackgroundProcess()  
    2.  
    3.     Dim i As Integer = 1 
    4.  
    5.     Do While True  
    6.  
    7.         ListBox1.Items.Add("Iterations: " + i)  
    8.  
    9.         i += 1  
    10.  
    11.     Loop  
    12.  
    13. End Sub  

    这段代码无限地循环并在每次循环中向窗体上的列表框中增加一个条目。如果你对VB.NET不熟悉的话,便会发现这段代码中有一些在VB6中无法完成的事:

    ◆在声明变量时对其赋值 Dim i As Integer=1

    ◆使用+=操作符 i+=1代替了i=i+1

    ◆Call关键字已经被去除了

    一旦我们有了一个工作过程,便需要将这段代码指派给一个新的线程并开始它的执行。完成这项工作,我们需要使用Thread对象,它是.NET框架类中System.Threading命名空间的一部分。当实例化了一个新的Thread类时,我们向其传递一个引用,这个引用指向我们想要在Thread类的构造函数中执行的代码块。下面的代码创建一个新的Thread对象并将指向BackgroundProcess的引用传递给它:

    1. Dim t As Thread  
    2.  
    3.  t = New Thread(AddressOf Me.BackgroundProcess)  
    4.  
    5. t.Start()  

    AddressOf操作符为BackgroundProcess方法创建了一个委派对象。委派在VB.NET中是一种类型安全的、面向对象的函数指针。在线程被实例化之后,你可以通过调用线程的Start()方法开始执行代码。

    使线程处于控制之下

    当线程开始之后,你可以通过使用Thread对象的方法对其状态进行一定的控制。你可以通过调用Thread.Sleep方法暂停线程的执行。这个方法接收一个表示线程将要休眠多长时间的整型数值。如果在上例中你想要减缓列表框条目的添加,在代码中放置一个对此方法的调用:

    1. Private Sub BackgroundProcess()  
    2.  
    3.     Dim i As Integer = 1 
    4.  
    5.     Do While True  
    6.  
    7.         ListBox1.Items.Add("Iterations: " + i)  
    8.  
    9.         i += 1  
    10.  
    11.         Thread.CurrentThread.Sleep(2000)  
    12.  
    13.     Loop  
    14.  
    15. End Sub  

    CurrentThread是一个公共静态属性,它可以使你获取一个对当前运行线程的引用。

    你还可以通过调用Thread.Sleep (System.Threading.Timeout.Infinite)使一个线程处于一种时间不确定的休眠状态。要中断这种休眠,可以调用Thread.Interrupt 方法。

    类似与Sleep和Interrupt的是Suspend和Resume。Suspend允许你阻塞一个线程直到另外的线程调用Thread.Resume。Sleep和Suspend之间的区别在于后者不是立即使一个线程处于等待状态。在.NET运行时确定线程是处于一个安全的挂起位置之前,线程是不会挂起的。Sleep则是立即使线程进入等待状态。

    最后,Thread.Abort中止一个线程的执行。在我们的简单例子中,我们还想增加另外一个可以使我们中止程序的按钮。要完成这些,我们所需做的一切便是如下面这样调用Thread.Abort方法:

    1. Private Sub Button2_Click(ByVal sender As System.Object, _  
    2.  
    3.         ByVal e As System.EventArgs) Handles Button2.Click  
    4.  
    5.     t.Abort()  
    6.  
    7. End Sub  

    在此便可以看出多线程的能力。用户界面看起来对用户是有响应的,因为它运行在一个线程中而后台的处理程序运行在另一个线程中。取消按钮会立即响应用户的click事件同时处理过程被中止。

    通过VB.NET多线程的过程传递数据

    上一个例子展示了一种相当简单的情况。在你编程的时候,多线程有很多需要解决的复杂问题。你将会遇到的一个问题是向传递给Thread类构造函数的过程传递数据以及从这个过程传出数据。换言之,你想要在另一个线程上开始的过程不能接收任何参数而且你也不能从这个过程返回任何数据。这是因为传递给线程构造函数的过程不能有任何参数或返回值。为了避开这个问题,将你的过程包装到一个类中,在这个类中此方法的参数被表示成类的一个域。

    有一个简单的例子,如果我们有一个计算一个数的平方的过程:

    1. Function Square(ByVal Value As Double) As Double  
    2.  
    3.     Return Value * Value  
    4.  
    5. End Function  

    为了使这个过程可以在一个新线程中使用,我们将其包装到一个类中:

    1. Public Class SquareClass  
    2.  
    3.     Public Value As Double  
    4.  
    5.     Public Square As Double  
    6.  
    7.     Public Sub CalcSquare()  
    8.  
    9.         Square = Value * Value  
    10.  
    11.     End Sub  
    12.  
    13. End Class  

    使用这些代码在一个新线程中启动CalcSquare过程,代码如下:

    1. Private Sub Button1_Click(ByVal sender As System.Object, _  
    2.  
    3.         ByVal e As System.EventArgs) Handles Button1.Click  
    4.  
    5.     Dim oSquare As New SquareClass()  
    6.  
    7.     t = New Thread(AddressOf oSquare.CalcSquare)  
    8.  
    9.     oSquare.Value = 30 
    10.  
    11.     t.Start()  
    12.  
    13. End Sub  

    注意:当线程开始后,我们没有检查类的平方值,因为并不能保证一旦你调用线程Start方法,它便会执行。有一些方法可以从另外的线程中获取这个值。最简单的方法是当线程完成时引发一个事件。我们会在下一个部分线程同步中讨论另外一种方法。下面的代码为SquareClass增加了事件声明。

    1. Public Class SquareClass  
    2.  
    3.     Public Value As Double  
    4.  
    5.     Public Square As Double  
    6.  
    7.     Public Event ThreadComplete(ByVal Square As Double)  
    8.  
    9.     Public Sub CalcSquare()  
    10.  
    11.         Square = Value * Value  
    12.  
    13.         RaiseEvent ThreadComplete(Square)  
    14.  
    15.     End Sub  
    16.  
    17. End Class  

    在调用代码中捕获这个事件与VB6相比没有太大的变化,仍然是用WithEvents声明变量并在一个过程中处理事件。变化的部分是用Handles关键字声明处理事件的过程并且不再使用像VB6中Object_Event的命名约定。

    1. Dim WithEvents oSquare As SquareClass  
    2.  
    3. Private Sub Button1_Click(ByVal sender As System.Object, _  
    4.  
    5.         ByVal e As System.EventArgs) Handles Button1.Click  
    6.  
    7.     oSquare = New SquareClass()  
    8.  
    9.     t = New Thread(AddressOf oSquare.CalcSquare)  
    10.  
    11.     oSquare.Value = 30 
    12.  
    13.     t.Start()  
    14.  
    15. End Sub  
    16.  
    17. Sub SquareEventHandler(ByVal Square As Double) _  
    18.  
    19.         Handles oSquare.ThreadComplete  
    20.  
    21.     MsgBox("The square is " & Square)  
    22.  
    23. End Sub  

    这个方法需要注意的一个问题是处理事件的过程,在本例中是SquareEventHandler,将运行在引发事件的线程中,而不是运行在窗体从中执行的线程中。

    线程同步

    VB.NET包含了一些语句用于提供线程的同步。在Square的例子中,你可能想同步执行计算的线程以便等到计算完成,这样便可以获得结果。举另外一个例子,如果你在一个单独的线程中对数组进行排序并且在使用这个数组之前要等待这个处理过程结束。为了实现这些同步,VB.NET提供了SyncLock语句和Thread.Join方法。

    SyncLock获取了对传递给它的对象引用的独占性锁。通过取得这种独占锁,你可以确保多个线程不会访问共享的数据或是在多个线程上执行代码。一个可以方便地用于获取锁地对象是关联于每个类的System.Type对象。可以通过GetType方法获得System.Type对象:

    1. Public Sub CalcSquare()  
    2.  
    3.     SyncLock GetType(SquareClass)  
    4.  
    5.         Square = Value * Value  
    6.  
    7.     End SyncLock  
    8.  
    9. End Sub  

    最后,Thread.Join方法允许你等待一段特定的时间直到一个线程结束。如果线程在你所确定的时间之前完成,Thread.Join返回True,否则的话返回False。在Square的例子中,如果我们不想引发事件,可以调用Thread.Join方法来确定计算是否已经结束。代码如下所示:

    1. Private Sub Button1_Click(ByVal sender As System.Object, _  
    2.  
    3.         ByVal e As System.EventArgs) Handles Button1.Click  
    4.  
    5.     Dim oSquare As New SquareClass()  
    6.  
    7.     t = New Thread(AddressOf oSquare.CalcSquare)  
    8.  
    9.     oSquare.Value = 30 
    10.  
    11.     t.Start()  
    12.  
    13.     If t.Join(500) Then  
    14.  
    15.         MsgBox(oSquare.Square)  
    16.  
    17.     End If  
    18.  
    19. End Sub  

     

    转载于:https://www.cnblogs.com/leeyu2010/archive/2011/01/22/1941815.html

    展开全文
  • VB 中应用 FSO 对象模型 从 Visual Basic 第一版至今,VB 中有关文件处理都是通过使用 Open 、Write 以及其它一些相关语句和函数来实现。随着软件技术不断发展,加上面向对象编程概念日臻成熟,这些...
  • VB.NET应用程序多线程的应用实例

    千次阅读 2013-01-24 18:21:25
    很长时间以来,开发人员一直要求微软为VB增加更多线程功能——这一点在VB.NET终于实现了。VB6不支持创建VB.NET多线程EXE、DLL以及OCX。但这种措词容易引起误解,这是因为VB6支持执行多个单线程单元。一个...

    很长时间以来,开发人员一直要求微软为VB增加更多的线程功能——这一点在VB.NET中终于实现了。VB6不支持创建VB.NET多线程的EXE、DLL以及OCX。但这种措词容易引起误解,这是因为VB6支持执行多个单线程的单元。一个单元实际上是代码执行的场所而且单元的边界限制了外部代码对单元内部的访问。

    VB.NET支持创建自由线程的应用程序。这意味着多个线程可以访问同一个共享的数据集。本文将带领你了解VB.NET多线程的基本内容。

    虽然VB支持多个单线程的单元,但并不支持允许多个线程在同一个数据集上运行的自由线程模型。在很多情况下,产生一个运行后台处理程序的新线程会提高应用程序的可用性。一种很显然的情况就是当执行一个可能使窗体看起来停止响应的长过程时,你一定会想在窗体上放置一个取消按钮。

    解决方法

    由于VB.NET使用公共语言运行时(Common Language Runtime),它增强了很多新的特性,其中之一便是创建自由线程应用程序的能力。

    在VB.NET中,开始使利用线程进行工作是很容易的。稍后我们会探究一些精妙之处,我们先创建一个简单的窗体,它生成一个执行后台处理程序的新线程。我们需要做的第一件事是将要在新线程上运行的后台处理程序。下面的代码执行一个相当长的运行过程——一个无限循环:

    1. Private Sub BackgroundProcess()  
    2.  
    3.     Dim i As Integer = 1 
    4.  
    5.     Do While True  
    6.  
    7.         ListBox1.Items.Add("Iterations: " + i)  
    8.  
    9.         i += 1  
    10.  
    11.     Loop  
    12.  
    13. End Sub  

    这段代码无限地循环并在每次循环中向窗体上的列表框中增加一个条目。如果你对VB.NET不熟悉的话,便会发现这段代码中有一些在VB6中无法完成的事:

    ◆在声明变量时对其赋值 Dim i As Integer=1

    ◆使用+=操作符 i+=1代替了i=i+1

    ◆Call关键字已经被去除了

    一旦我们有了一个工作过程,便需要将这段代码指派给一个新的线程并开始它的执行。完成这项工作,我们需要使用Thread对象,它是.NET框架类中System.Threading命名空间的一部分。当实例化了一个新的Thread类时,我们向其传递一个引用,这个引用指向我们想要在Thread类的构造函数中执行的代码块。下面的代码创建一个新的Thread对象并将指向BackgroundProcess的引用传递给它:

    1. Dim t As Thread  
    2.  
    3.  t = New Thread(AddressOf Me.BackgroundProcess)  
    4.  
    5. t.Start()  

    AddressOf操作符为BackgroundProcess方法创建了一个委派对象。委派在VB.NET中是一种类型安全的、面向对象的函数指针。在线程被实例化之后,你可以通过调用线程的Start()方法开始执行代码。

    使线程处于控制之下

    当线程开始之后,你可以通过使用Thread对象的方法对其状态进行一定的控制。你可以通过调用Thread.Sleep方法暂停线程的执行。这个方法接收一个表示线程将要休眠多长时间的整型数值。如果在上例中你想要减缓列表框条目的添加,在代码中放置一个对此方法的调用:

    1. Private Sub BackgroundProcess()  
    2.  
    3.     Dim i As Integer = 1 
    4.  
    5.     Do While True  
    6.  
    7.         ListBox1.Items.Add("Iterations: " + i)  
    8.  
    9.         i += 1  
    10.  
    11.         Thread.CurrentThread.Sleep(2000)  
    12.  
    13.     Loop  
    14.  
    15. End Sub  

    CurrentThread是一个公共静态属性,它可以使你获取一个对当前运行线程的引用。

    你还可以通过调用Thread.Sleep (System.Threading.Timeout.Infinite)使一个线程处于一种时间不确定的休眠状态。要中断这种休眠,可以调用Thread.Interrupt 方法。

    类似与Sleep和Interrupt的是Suspend和Resume。Suspend允许你阻塞一个线程直到另外的线程调用Thread.Resume。Sleep和Suspend之间的区别在于后者不是立即使一个线程处于等待状态。在.NET运行时确定线程是处于一个安全的挂起位置之前,线程是不会挂起的。Sleep则是立即使线程进入等待状态。

    最后,Thread.Abort中止一个线程的执行。在我们的简单例子中,我们还想增加另外一个可以使我们中止程序的按钮。要完成这些,我们所需做的一切便是如下面这样调用Thread.Abort方法:

    1. Private Sub Button2_Click(ByVal sender As System.Object, _  
    2.  
    3.         ByVal e As System.EventArgs) Handles Button2.Click  
    4.  
    5.     t.Abort()  
    6.  
    7. End Sub  

    在此便可以看出多线程的能力。用户界面看起来对用户是有响应的,因为它运行在一个线程中而后台的处理程序运行在另一个线程中。取消按钮会立即响应用户的click事件同时处理过程被中止。

    通过VB.NET多线程的过程传递数据

    上一个例子展示了一种相当简单的情况。在你编程的时候,多线程有很多需要解决的复杂问题。你将会遇到的一个问题是向传递给Thread类构造函数的过程传递数据以及从这个过程传出数据。换言之,你想要在另一个线程上开始的过程不能接收任何参数而且你也不能从这个过程返回任何数据。这是因为传递给线程构造函数的过程不能有任何参数或返回值。为了避开这个问题,将你的过程包装到一个类中,在这个类中此方法的参数被表示成类的一个域。

    有一个简单的例子,如果我们有一个计算一个数的平方的过程:

    1. Function Square(ByVal Value As Double) As Double  
    2.  
    3.     Return Value * Value  
    4.  
    5. End Function  

    为了使这个过程可以在一个新线程中使用,我们将其包装到一个类中:

    1. Public Class SquareClass  
    2.  
    3.     Public Value As Double  
    4.  
    5.     Public Square As Double  
    6.  
    7.     Public Sub CalcSquare()  
    8.  
    9.         Square = Value * Value  
    10.  
    11.     End Sub  
    12.  
    13. End Class  

    使用这些代码在一个新线程中启动CalcSquare过程,代码如下:

    1. Private Sub Button1_Click(ByVal sender As System.Object, _  
    2.  
    3.         ByVal e As System.EventArgs) Handles Button1.Click  
    4.  
    5.     Dim oSquare As New SquareClass()  
    6.  
    7.     t = New Thread(AddressOf oSquare.CalcSquare)  
    8.  
    9.     oSquare.Value = 30 
    10.  
    11.     t.Start()  
    12.  
    13. End Sub  

    注意:当线程开始后,我们没有检查类的平方值,因为并不能保证一旦你调用线程Start方法,它便会执行。有一些方法可以从另外的线程中获取这个值。最简单的方法是当线程完成时引发一个事件。我们会在下一个部分线程同步中讨论另外一种方法。下面的代码为SquareClass增加了事件声明。

    1. Public Class SquareClass  
    2.  
    3.     Public Value As Double  
    4.  
    5.     Public Square As Double  
    6.  
    7.     Public Event ThreadComplete(ByVal Square As Double)  
    8.  
    9.     Public Sub CalcSquare()  
    10.  
    11.         Square = Value * Value  
    12.  
    13.         RaiseEvent ThreadComplete(Square)  
    14.  
    15.     End Sub  
    16.  
    17. End Class  

    在调用代码中捕获这个事件与VB6相比没有太大的变化,仍然是用WithEvents声明变量并在一个过程中处理事件。变化的部分是用Handles关键字声明处理事件的过程并且不再使用像VB6中Object_Event的命名约定。

    1. Dim WithEvents oSquare As SquareClass  
    2.  
    3. Private Sub Button1_Click(ByVal sender As System.Object, _  
    4.  
    5.         ByVal e As System.EventArgs) Handles Button1.Click  
    6.  
    7.     oSquare = New SquareClass()  
    8.  
    9.     t = New Thread(AddressOf oSquare.CalcSquare)  
    10.  
    11.     oSquare.Value = 30 
    12.  
    13.     t.Start()  
    14.  
    15. End Sub  
    16.  
    17. Sub SquareEventHandler(ByVal Square As Double) _  
    18.  
    19.         Handles oSquare.ThreadComplete  
    20.  
    21.     MsgBox("The square is " & Square)  
    22.  
    23. End Sub  

    这个方法需要注意的一个问题是处理事件的过程,在本例中是SquareEventHandler,将运行在引发事件的线程中,而不是运行在窗体从中执行的线程中。

    线程同步

    VB.NET包含了一些语句用于提供线程的同步。在Square的例子中,你可能想同步执行计算的线程以便等到计算完成,这样便可以获得结果。举另外一个例子,如果你在一个单独的线程中对数组进行排序并且在使用这个数组之前要等待这个处理过程结束。为了实现这些同步,VB.NET提供了SyncLock语句和Thread.Join方法。

    SyncLock获取了对传递给它的对象引用的独占性锁。通过取得这种独占锁,你可以确保多个线程不会访问共享的数据或是在多个线程上执行代码。一个可以方便地用于获取锁地对象是关联于每个类的System.Type对象。可以通过GetType方法获得System.Type对象:

    1. Public Sub CalcSquare()  
    2.  
    3.     SyncLock GetType(SquareClass)  
    4.  
    5.         Square = Value * Value  
    6.  
    7.     End SyncLock  
    8.  
    9. End Sub  

    最后,Thread.Join方法允许你等待一段特定的时间直到一个线程结束。如果线程在你所确定的时间之前完成,Thread.Join返回True,否则的话返回False。在Square的例子中,如果我们不想引发事件,可以调用Thread.Join方法来确定计算是否已经结束。代码如下所示:

    1. Private Sub Button1_Click(ByVal sender As System.Object, _  
    2.  
    3.         ByVal e As System.EventArgs) Handles Button1.Click  
    4.  
    5.     Dim oSquare As New SquareClass()  
    6.  
    7.     t = New Thread(AddressOf oSquare.CalcSquare)  
    8.  
    9.     oSquare.Value = 30 
    10.  
    11.     t.Start()  
    12.  
    13.     If t.Join(500) Then  
    14.  
    15.         MsgBox(oSquare.Square)  
    16.  
    17.     End If  
    18.  
    19. End Sub  
    展开全文
  • DDE在vb.net中的应用

    千次阅读 2018-01-08 18:30:44
    很早时候做过DDE方面程序,那是在2005年刚来深圳时候,公司一个产品需要在excel中动态显示数据,临时做了这么个东西,那个产品是vb.net做,因此就现在vc下面测试后移到vb中应用,还真成功了。...
  • 在在应应用用中中使使用用MySQL的的方方法法 这篇文章主要介绍了在应用中使用MySQL方法,操作基于Visual Studio IDE进行,需要朋友可以参考下 绪言言 在Visual Studio使用向导连接到MySQL 据库是一件相当棘手...
  • VB窗体中的按钮应用实例,主要是练习按钮使用,文本框是一个文本编辑区域,用户可以在该区域输入、编辑、修改和显示正文内容,即创建一个简单文本编辑器。
  • 绪言在Visual Studio使用向导...在本文我将介绍如何使用VB.NET连接到MySQL数据库并且执行SQL语句(SELECT,UPDATE,DELETE),同时我会展示如何将MySQL连接器导入(connectors)到Visual Studio 2012。使用代码...
  • VB程序1设计课程是大多数高校非计算机专业学生必修一门公共计算机课程,旨在提高非计算机专业学生计算机应用能力。为了培养具有创新意识、创新思维、创新能力和创新精神复合型人才,提出一种适应此培养目标...
  • VB应用

    热门讨论 2021-01-11 11:28:38
    VB单步调试需要设置断点,在程序代码,将光标移到要设置断点那条语句前面,然后执行“调试”菜单中的“切换断点”命令。 1、设置了断点代码行将以粗体形式突出显示,如图所示: 2、单步调试即逐个语句地...
  • VB中HitTest方法的应用

    2011-08-20 10:56:00
    很久没有用过VB6了,最近有人问到...在VB6两个用比较多控件:ListView TreeView,如果我们通过鼠标移动来获取当前位置内容,可以利用控件HitTest方法来获取。下面例子是个显示鼠标位置提示信息,有兴趣...
  • SQLDMO在VB中的应用

    千次阅读 2010-03-09 19:17:00
    SQLDMO(SQL Distributed Management Objects,SQL分布式管理对象)封装 Microsoft SQL Server 2000 数据库中的对象。SQL-DMO 允许用支持自动... SQL-DMO 是 SQL Server 2000 中的 SQL Server 企业管理器所使用的应用
  • 本文实例形式介绍了VB.NETTextBox智能感知实现方法,功能非常实用,具体如下: 该实例主要实现:在TextBox键入字符,可以智能感知出列表,同时对不存在单词(没有出现智能感知)自动显示“Not Found”。 ...
  • VB.netHOOK的应用

    2008-03-25 14:35:00
    VB.netHOOK的应用(一) 在vb.net版做版主有一阵子了,一直在思考怎么能更好地帮助大家理解vb.net新概念与编程方法。小小回贴很难说清楚很多问题,所以利用一下文档中心这片广阔天地,进行更深入探讨。...
  • VB--FSO对象模型在VB中的应用

    千次阅读 2007-04-19 08:50:00
    FSO对象模型在VB中的应用 从 Visual Basic 第一版至今,VB中有关文件处理都是通过使用 Open 、Write以及其它一些相关语句和函数来实现。随着软件技术不断发展,加上面向对象编程概念日臻成熟,这些文件...
  • 【转】VB中应用DDE

    2017-06-15 18:09:18
    动态数据交换(dde)是windows应用程序间通讯基本方法之一,在动态数据交换过程,提供数据和服务的应用程序称为服务器,请求数据或服务的应用程序则称为客户。 dde交谈是由客户程序启动。如果得到服务器...
  • 本工具包包含算法包括BP算法中的一些改进算法、模糊神经网络、小波神经网络、遗传算法优化神经网络权值改进算法等,根据需要,读者还可以对该工具包进行扩展,即扩充一些新函数,以实现特殊算法需求。
  • api函数快速入门,详细介绍了声明每部分意义及实例,是入门最好说明之一,是在茫茫网络寻找到较为理想入门说明之一
  • VB是Windows操作系统下优秀可视化编程工具软件,在用户界面设计和快速开发等方面具有独特优势。同时,Matlab仿真软件以其强大科学计算功能和开放式开发思想使其成为当前最为流行仿真计算工具。综合两种开发...
  • 文章主要针对VB和Access是什么、VB+Access在煤炭物流信息系统中的设计、VB+Access在煤炭物流信息系统中的应用和煤炭物流信息系统中VB+Access运用必要性四个大方面进行详细探讨。
  • 使用VB快速开发数据库应用系统 ...虽然VB不是数据库管理系统软件,但由于他提供了功能强大数据库访问支持,使用他可以快速开发出数据库应用系统。由于他还具有简单易学、可视化编程等优点,得到了许多数据库开发者
  • 引用了Microsoft VBScript... RegExp 这是VB使用正则表达式匹配模式主要对象了。其提供属性用于设置那些用来比较传递给 RegExp 实例字符串模式。 其提供方法以确定字符串是否与正则表达式特定模式相匹配
  • 存取对象变量库结构作为一个功能较完备的Windows软件开发平台,Visual Basic专业版提供了对数据库应用的强大支持。尤其提供了使用数据控件和绑定控制项,使用数据库存取对象变量(Data Access Object Variable),...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,194
精华内容 1,677
关键字:

vb中应用的是