[visual-studio]在 Visual Studio 的宏使用 System.Windows.Forms

发布时间: 2014/2/26 21:41:42
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我已经开始在 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

但我完全不知如何显示 ListBox

我的行为类似于此的 InputBox 示例:

Dim str As String = InputBox("title", "prompt")

正如我们可以看到 InputBox 可以构造和显示在屏幕上立即返回 String 一旦关闭框。

我试着在调用以下方法 myListBox 后填充它与 String 中的 s xs ,但 ListBox 仍未显示在屏幕的:

myListBox.EndUpdate()
myListBox.Show()

我也试过创建 System.Windows.Forms.Form 和添加 ListBox 对它的按钮(根据例子,Visual Basic) 在这里列出遵循类似的做法。再没有出现在 form.ShowDialog() 调用。

解决方法 1:

下面的代码为我在 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
官方微信
官方QQ群
31647020