在Visual Studio宏中使用System.Windows.Forms

duk*_*ave 1 macros vbscript visual-studio-2005 visual-studio winforms

我已经开始在Visual Studio 2005中编写一个宏,如下所示:

Public Sub myMacro()
    Dim myListBox As New System.Windows.Forms.ListBox()
    For Each x As String In xs
        myListBox.Items.Add(x)
    Next
Run Code Online (Sandbox Code Playgroud)

但我完全不知道如何展示ListBox,

我想要与此InputBox示例类似的行为:

Dim str As String = InputBox("title", "prompt")
Run Code Online (Sandbox Code Playgroud)

正如我们所看到的,InputBox可以立即构建并显示在屏幕上,String一旦框关闭就返回.

我尝试myListBox使用Strings in 填充后调用以下方法xs,但ListBox仍然没有出现在屏幕上:

myListBox.EndUpdate()
myListBox.Show()
Run Code Online (Sandbox Code Playgroud)

我也尝试创建一个System.Windows.Forms.Form并添加ListBox它,遵循类似于按钮概述的方法(在Examples,Visual Basic下).form.ShowDialog()呼叫中再没有出现任何内容.

Kev*_*evB 6

下面的代码在Visual Studio 2008中对我来说很好.System.Windows.Forms当我打开宏IDE时,引用已经到位了,我只需要Imports System.Windows.Forms在模块的顶部添加一个.

Public Sub myMacro()

    Dim myListBox As New ListBox
    Dim xs As String() = New String() {"First", "Second", "Third", "Fourth"}

    For Each x As String In xs
        myListBox.Items.Add(x)
    Next

    Dim frm As New Form
    Dim btn As New Button

    btn.Text = "OK"
    btn.DialogResult = DialogResult.OK

    frm.Controls.Add(btn)
    btn.Dock = DockStyle.Bottom

    frm.Controls.Add(myListBox)
    myListBox.Dock = DockStyle.Fill

    If frm.ShowDialog() = DialogResult.OK Then
        MessageBox.Show(myListBox.SelectedItem)
    End If

End Sub
Run Code Online (Sandbox Code Playgroud)