1

j'ai commencé à écrire une macro dans Visual Studio 2005 comme ceci:Utilisation System.Windows.Forms dans un 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 

Mais je suis tout à fait à une perte sur la façon d'afficher la ListBox,

Je voudrais un comportement similaire à cet exemple InputBox:

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

Comme on peut le voir le InputBox peut être construit et affiché à l'écran immédiatement, re en tournant String une fois la boîte fermée.

J'ai essayé appelé les méthodes suivantes sur myListBox après peuplant les String s dans xs, mais le ListBox ne semble toujours pas de l'écran:

myListBox.EndUpdate() 
myListBox.Show() 

J'ai aussi essayé de créer un System.Windows.Forms.Form et en ajoutant la ListBox, suivant une approche similaire à celle décrite pour un bouton here (under Examples, Visual Basic). Encore une fois rien n'apparaît sur l'appel form.ShowDialog().

+0

Avez-vous ajouté une référence à l'assembly System.Windows.Forms? BTW, je pense que vous aurez besoin d'élaborer parce que je ne peux vraiment pas voir de relation entre un ListBox et une invite InputBox. – Cerebrus

+0

Je n'avais pas ajouté de référence, mais maintenant j'ai, donc merci pour ce conseil. Malheureusement, la ListBox ne s'affiche toujours pas. Pour clarifier, la relation à InputBox dont j'ai besoin est seulement qu'elle soit affichée! Actuellement, je ne peux pas trouver un moyen d'afficher le ListBox à l'écran. J'ai édité ma question pour clarifier ceci. – dukedave

Répondre

6

Le code ci-dessous a bien fonctionné pour moi dans Visual Studio 2008. La référence à System.Windows.Forms était déjà en place lorsque j'ai ouvert l'EDI des macros, j'ai simplement dû ajouter un Imports System.Windows.Forms en haut du module.

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 
Questions connexes