Archief - [PROG]VB.NET Eventhandler aan dynamische controls

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Cedric

Legacy Member
Ik zou dus moeten controls (TextBoxes) een dynamische naam geven die bepaald wordt door een i. Deze zou ik dan terug moeten kunnen aanspreken en Eventhandlers aan koppelen.

Mijn voorlopige code is:

Code:
Public Class Form1
    Protected aantalControls As Integer
    Protected lengte As Integer
    Private lengteControl As Integer
    Private posHorizontaal As Integer
    Private txt

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        aantalControls = 5
        lengte = Me.Size().Width.ToString()
        lengteControl = lengte / aantalControls

        posHorizontaal = 0
        Dim teller = Me.aantalControls
        Dim i As Integer
        For i = 0 To 4 Step 1

            Dim txt As New TextBox()
            txt.Name = ("txt" & i)
            txt.Location = New Point(i * Me.lengteControl, 100)
            Me.Controls.Add(txt)
            txt.Size = New Size(Me.lengteControl, txt.Size.Height())
            txt.Enabled = False
        Next

        For i = 0 To 4 Step 1
            Dim txt As New TextBox()
            'Me.Controls.Find("txt" & i, False).SetValue(i.ToString())
        Next
    End Sub
End Class

Ik ben bijna zeker dat het met die txt.Name en die Controls te maken heeft.
In C# is er een mogelijkheid om een ID mee te geven en die dan op te vragen met FindControl(), maar in VB.net vind ik die mogelijkheid niet. Kan iemand helpen?

bedankt

Obliv`

Legacy Member
Je gebruikt je variabele 'teller' niet. Maar das nu de zaak niet ;).

AddHandler kan je uit de problemen helpen, dan hoef je die control geen naam te geven.

In die lus wordt dat dan: AddHandler(txt, AddressOf UwEventHandler)

Cedric

Legacy Member
heb die addhandler wat opgezocht maar kgeraak er niet veel wijzer uit.

code is nu al een heel groot stuk aangepast en mijn bedoeling zou zijn om een 50 tal (variabel aantal) labels op een scherm te laten tonen. bij de on_Click event die moet toegewezen worden wordt er 1 nieuw form geopend met alle instellingen van dat label. dus ik neem aan dat ik dat label moet meegeven in form f = new form(lbl34)

ik zou dus de naam moeten weten + in de handler bovenstaande code moeten krijgen

als iemand me zou kunnen helpen zou dat fantastisch zijn ;)

tnx

Obliv`

Legacy Member
p!mp zei:
heb die addhandler wat opgezocht maar kgeraak er niet veel wijzer uit.

code is nu al een heel groot stuk aangepast en mijn bedoeling zou zijn om een 50 tal (variabel aantal) labels op een scherm te laten tonen. bij de on_Click event die moet toegewezen worden wordt er 1 nieuw form geopend met alle instellingen van dat label. dus ik neem aan dat ik dat label moet meegeven in form f = new form(lbl34)

ik zou dus de naam moeten weten + in de handler bovenstaande code moeten krijgen

als iemand me zou kunnen helpen zou dat fantastisch zijn ;)

tnx

Zo zou het ONGEVEER moeten zijn:

Code:
Public Class Form1
    
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim aantalControls As Integer = 5
        Dim lengteControl As Integer = Me.Size.Width / aantalControls
        Dim index As Integer = 0
        Dim textBox As TextBox = Nothing
        
        For index = 0 To aantalControls Step +1
            textBox = New TextBox()
            
            With textBox
                .Location = New Location(index * lengteControl, 100)
                .Size = New Size(lengteControl, 50)
                .Enabled = False
            End With
            
            AddHandler textBox.OnClick, AddressOf TextBoxHandler
            
            Me.Controls.Add(textBox)
        Next
    End Sub
    
    Public Sub TextBoxHandler(sender As Object, e As System.EventArgs)
        Form f As Form = New Form(CType(sender, TextBox))
        
        f.Show()
    End Sub
End Class

Cedric

Legacy Member
kun je me dan even uitleggen. hoe ik de waarden uit die textboxes opvraag en open in een nieuw form?

New Form(CType(sender, TextBox))

in een volgende form zou ik dan specifiek bvb de waarde, de textcolor, backcolor en dergerlijke moeten krijgen.

Obliv`

Legacy Member
p!mp zei:
kun je me dan even uitleggen. hoe ik de waarden uit die textboxes opvraag en open in een nieuw form?

New Form(CType(sender, TextBox))

in een volgende form zou ik dan specifiek bvb de waarde, de textcolor, backcolor en dergerlijke moeten krijgen.

Dit is toch zeer basis programmeren niet?

In dat tweede form maak je dan een constructor aan:
Code:
Public Class TweedeForm

    Public Sub New(textBox As TextBox)
        Dim text As String = textBox.Text
    End Sub
    
End Class

Cedric

Legacy Member
ok het is gelukt

tnx obliv.

Ik had een groot probleem met die new, blijkt dat je de initializeComponents() zelf moet toevoegen.

na 3 jaar C# op school moet ik plotseling in vb.net beginnen programmeren en de verschillen zitten soms wel heel ver verborgen :p

tnx

Obliv`

Legacy Member
p!mp zei:
ok het is gelukt

tnx obliv.

Ik had een groot probleem met die new, blijkt dat je de initializeComponents() zelf moet toevoegen.

na 3 jaar C# op school moet ik plotseling in vb.net beginnen programmeren en de verschillen zitten soms wel heel ver verborgen :p

tnx

En waarom doe je zoiets als van C# naar VB gaan? :)

Cedric

Legacy Member
omdat c# en java de voertalen waren in mijn richting. En op mijn stage programmeren ze allemaal in vb6 of vba voor acces. Ze willen overschakelen naar VB en hebben ze dus een stagair aanvaard die moet programmeren in VB.net :p

had het nog nooit gezien maar tot nutoe heb ik alles gevonden wat ik nodig heb. Het vergt alleen heeeeel veeeeel opzoekingswerkt terwijl ik iets kan coderen in c# in 2 min


achja tis weer een ervaring rijker zeker :p
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan