2009-05-22 11 views
1

Ich habe begonnen, ein Makro zu schreiben in Visual Studio 2005 wie folgt aus:Mit System.Windows.Forms in einem Visual Studio Macro

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

Aber ich bin völlig ratlos, wie die ListBox anzuzeigen,

ich ein ähnliches Verhalten wie dieses InputBox Beispiel möchte:

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

Wie wir die InputBox sofort auf dem Bildschirm aufgebaut und angezeigt werden sehen können, re Drehen eines String, sobald die Box geschlossen ist.

Ich habe versucht, genannt die folgenden Methoden auf myListBox, nachdem sie mit den String s in xs bevölkern, aber die ListBox scheint noch nicht auf dem Bildschirm:

myListBox.EndUpdate() 
myListBox.Show() 

ich auch eine System.Windows.Forms.Form versucht haben, Erstellen und Hinzufügen der ListBox dazu, nach einem ähnlichen Ansatz zu dem für einen Knopf here (under Examples, Visual Basic) skizziert. Wieder erscheint nichts auf dem Anruf form.ShowDialog().

+0

Haben Sie einen Verweis auf die System.Windows.Forms-Assembly hinzugefügt? Übrigens, ich denke, Sie müssen etwas näher ausführen, weil ich wirklich keine Beziehung zwischen einer ListBox und einer Eingabeaufforderung sehen kann. – Cerebrus

+0

Ich hatte keine Referenz hinzugefügt, aber jetzt habe ich, also danke für diesen Rat. Leider wird die ListBox immer noch nicht angezeigt. Um zu verdeutlichen, ist die Beziehung zu InputBox, die ich benötige, nur, dass sie angezeigt wird! Zur Zeit kann ich keine Möglichkeit finden, die ListBox auf dem Bildschirm anzuzeigen. Ich habe meine Frage bearbeitet, um dies zu klären. – dukedave

Antwort

6

Der folgende Code funktionierte für mich in Visual Studio 2008. Der Verweis auf System.Windows.Forms war bereits vorhanden, als ich die Makro-IDE öffnete, ich musste einfach eine Imports System.Windows.Forms an der Spitze des Moduls hinzufügen.

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