Voorwerp maken tijdens debuggen

Status
Niet open voor verdere reacties.

Pim15

Gebruiker
Lid geworden
18 mrt 2012
Berichten
257
Is het mogelijk om tijdens het debuggen een voorwerp (zoals een ListBox) in een tabblad van een TabControl te laten verschijnen? Het moet niet met Visible want de gebruiker moet het aan kunnen maken tijdens het debuggen.

Pim
 
Ja, dat is goed mogelijk:
Vb1:
[CPP] Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Listbox1 As New ListBox
Listbox1.Size = New Size(100, 100)
Listbox1.Location = New Point(30, 30)
Listbox1.Items.Add("TestItem")
AddHandler Listbox1.Click, AddressOf Listbox1_Click

Me.Controls.Add(Listbox1)
End Sub

Private Sub Listbox1_Click(ByVal sender As Object, ByVal e As System.EventArgs)
MsgBox("Listbox clicked")
End Sub[/CPP]

Vb2:
[CPP] Private WithEvents Listbox1 As New ListBox

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Listbox1 = New ListBox
Listbox1.Size = New Size(100, 100)
Listbox1.Location = New Point(30, 30)
Listbox1.Items.Add("TestItem")

Me.Controls.Add(Listbox1)
End Sub

Private Sub Listbox1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Listbox1.Click
MsgBox("Listbox clicked")
End Sub[/CPP]

Het makkelijkst om de locatie en grootte te bepalen kan je hem eerst aanmaken in de designer en dan naar de locatie, size enz. kijken.

Succes! :thumb:
MartinJM
 
Het komt alleen te voorschijn als de TabControl er niet is. Als die er wel is verschijnt er niks. Ik denk dat het er dan onder gaat. Hoe kan ik dit oplossen?

Pim
 
Verander dit:
[CPP]Me.Controls.Add(Listbox1)[/CPP]
in dit:
[CPP]TabControl1.TabPages(0).Controls.Add(Listbox1)[/CPP]

De locatie is dan volgens mij wel afhankelijk van het tabblad.

MartinJM
 
Er komen alleen meer tabbladen in, maar het verschijnt maar in één tabblad. Dit is de code waar het in moet:
Code:
Private Sub TabbladToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles TabbladToolStripMenuItem.Click
        Dim Tabnaam As String
        Dim Knop As Integer
        Tabnaam = InputBox("Naam voor nieuwe tab:")
        If Tabnaam = Nothing Then
            MsgBox("Te weinig tekens.", 48)
        Else
            Knop = MsgBox("Tab met naam " & Tabnaam & " aanmaken?", 33)
            If Knop = vbOK Then TabControl1.TabPages.Add(Tabnaam)
            Dim Listbox1 As New ListBox
            Listbox1.Size = New Size(100, 100)
            Listbox1.Location = New Point(6, 6)
            Listbox1.Items.Add("Test")
            TabControl1.TabPages(0).Controls.Add(Listbox1)
        End If
    End Sub
 
Ik zou het zelf zo doen:
[CPP] Dim Tabnaam As String
Tabnaam = InputBox("Naam voor nieuwe tab:")
If Tabnaam = Nothing Then
Dim Annuleren As DialogResult = MsgBox("Te weinig tekens." & Chr(13) & "Wilt u annuleren?", MsgBoxStyle.YesNo)
If Annuleren = Windows.Forms.DialogResult.Yes Then
Exit Sub
Else
Button1.PerformClick() ''// ik gebruik een button, maar ik geloof dat dit ook met een menuitem kan...
End If
End If

Dim Tb As New TabPage
Tb.Text = Tabnaam
Tb.Name = "Tb" & Tabnaam

Dim Listbox1 As New ListBox
Listbox1.Size = New Size(100, 100)
Listbox1.Location = New Point(6, 6)
Listbox1.Items.Add("Item1")
Tb.Controls.Add(Listbox1)

TabControl1.TabPages.Add(Tb)[/CPP]

Maar als het toegevoegde tabblad altijd de laatste is, zou je deze lijn:
[CPP]TabControl1.TabPages(0).Controls.Add(Listbox1)[/CPP]
ook kunnen veranderen in deze lijn:
[CPP]TabControl1.TabPages(TabControl1.TabPages.Count - 1).Controls.Add(Listbox1)[/CPP]

In de bovenste code heb ik ook nog wat andere kleine aanpassingen gemaakt waar je even naar kan kijken, maar die zijn niet noodzakelijk.

MartinJM
 
Ik heb de bovenstaande code gebruikt, maar als je op 'Annuleren' klikt, dan op 'Nee', dan weer op 'Annuleren' en dan op 'Ja' klikt dan komt er een naamloos tabblad. Hoe kan dit verholpen worden?

Pim

PS. Als ik te veeleisend word, laat dan maar zitten. Het is natuurlijk wel leuk als je mij helpt en misschien vind je het zelf ook wel leuk.
PS 2. Het 'Performclick' werkt ook met een 'ToolStripMenuItem'.
 
Laatst bewerkt:
Kan het niet beter op deze manier:

Code:
        Dim Tabnaam As String = InputBox("Naam voor nieuwe tab:")
        If Tabnaam = Nothing Then
            MessageBox.Show("Te weinig tekens.", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
            Exit Sub
        Else
            Dim Tb As New TabPage
            Tb.Text = Tabnaam
            Tb.Name = "Tb" & Tabnaam

            Dim Listbox1 As New ListBox
            Listbox1.Size = New Size(100, 100)
            Listbox1.Location = New Point(6, 6)
            Listbox1.Items.Add("Item1")
            Tb.Controls.Add(Listbox1)

            TabControl1.TabPages.Add(Tb)
        End If
 
Volgens de manier van The Mighty Atom werkt het. Bedankt.

Pim
 
Hoi,

Het is fijn dat het is opgelost! :thumb:


Maar om nog even terug te komen op mijn niet-werkende code: Ik was 1 stukje vergeten:
[CPP]Exit Sub[/CPP]
na het opnieuw aanroepen van de sub (in mijn voorbeeld "Button1.PerformClick()").

Dus dan krijg je dit, wat wel werkt:
[CPP]
Dim Tabnaam As String
Tabnaam = InputBox("Naam voor nieuwe tab:")
If Tabnaam = Nothing Then
Dim Annuleren As DialogResult = MsgBox("Te weinig tekens." & Chr(13) & "Wilt u annuleren?", MsgBoxStyle.YesNo)
If Annuleren = Windows.Forms.DialogResult.Yes Then
Exit Sub
Else
Button1.PerformClick() ''// ik gebruik een button, maar ik geloof dat dit ook met een menuitem kan...
Exit Sub
End If
End If

Dim Tb As New TabPage
Tb.Text = Tabnaam
Tb.Name = "Tb" & Tabnaam

Dim Listbox1 As New ListBox
Listbox1.Size = New Size(100, 100)
Listbox1.Location = New Point(6, 6)
Listbox1.Items.Add("Item1")
Tb.Controls.Add(Listbox1)

TabControl1.TabPages.Add(Tb)[/CPP]

MartinJM
 
Inderdaad, nu werkt het wel. Dan kan ik kiezen welke ik gebruik.

Pim
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan