Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2014
    Messaggi
    2

    Evento del click di un button creato da codice ed inserito in una matrice

    Salve a tutti,
    Sto facendo un programma con Visual Basic che giudica le performance di cantanti che si esibiscono 1 vs 1, e per l'inserimento dei voti di ogni cantante ho deciso di usare dei button che, al loro click, aprono un form con il modulo di inserimento del voto. Ora, dato che i cantanti sono molti e i voti da inserire sono 3 per ogni cantante in ogni sfida, ho deciso, per comodità, di creare una matrice a 2 dimensioni di buttons, di assegnargli una posizione nel form e un testo da visualizzare all'interno e di aggiungerlo ai controls del form, tutto questo da codice (ovviamente con dei cicli for e con l'istruzione
    Me.Controls.Add(votiButtons(i,j)) )
    Dato che nella scheda contenente la parte grafica del form su cui verranno inseriti (al momento dell'esecuzione) i buttons, questi ultimi non sono presenti in quanto inseriti da codice, per scrivere la funzione che viene eseguita al click del bottone non posso comodamente fare doppio click su di esso nella scheda di configurazione del form, perché, appunto, non c'è!
    Vorrei sapere, dunque, come si fa a scrivere la funzione che viene eseguita quando si preme uno dei buttons appartenenti alla matrice votiButtons ?
    Se è necessario del codice che ho scritto fatemelo sapere e lo posterò immediatamente.
    Grazie anticipatamente per l'aiuto!

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ultima modifica di oregon; 13-12-2014 a 19:05
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2014
    Messaggi
    2
    Grazie, ho letto le guide e mi sono state utili! Tuttavia mi si presenta un ulteriore problema: quando clicco su uno dei buttons vorrei che si eseguisse una funzione che opera solamente sul button che ho cliccato, quindi mi sarebbe molto utile se potessi passare dei parametri alla funzione che viene eseguita al momento del click del bottone: questi parametri sono i due indici della matrice. Ho provato a scrivere questo codice:

    Private Sub inizializza()
    Dim ngioc As Integer = 8
    For i = 0 To ngioc - 2
    For j = 0 To 5
    votiButtons(i, j) = New Button
    With votiButtons(i, j)
    .Location = New Point(620 + j * 73, 78 + i * 32)
    .Text = 0
    .Visible = True
    .Enabled = True
    .Size = New Size(50, 20)
    End With
    Me.Controls.Add(votiButtons(i, j))
    AddHandler votiButtons(i, j).Click, AddressOf votiButtons_click
    Next
    Next
    End Sub

    Private Sub votiButtons_click(sender As Object, e As EventArgs)
    MsgBox("puls prem")
    End Sub

    Ma, come si può notare, qualsiasi bottone venga premuto il codice eseguito è sempre lo stesso. Come faccio a passare dei parametri al metodo votiButtons_click che facciano in qualche modo riferimento SOLAMENTE al bottone che ho premuto ? C'entra qualcosa sender As Object ? E cosa significa e As EventArgs ?
    Scusate la mia ignoranza ma sono un principiante che si diletta nell'informatica scrivendo questi programmini

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    L'oggetto che ha scatenato l'evento è proprio

    sender

    http://visualbasic.about.com/od/quicktips/qt/netc2.htm
    http://visualbasic.about.com/od/lear...enthandler.htm

    P.S. Leggi un libro di base di programmazione VB.NET ... sono elementi di base della programmazione ...
    Ultima modifica di oregon; 14-12-2014 a 13:44
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2014
    residenza
    Vicenza
    Messaggi
    318
    Quando definisci il bottone, o gli assegni la proprietà Name oppure gli scrivi qualche cosa dentro la proprietà Tag.
    Questo ti servirà per capire quale bottone è stato premuto.
    L'oggetto sender è proprio il tuo bottone premuto per cui con sender.Tag capirai quale bottone è stato premuto.

    Sergio

    P.S.: per estrarre il Tag da sender devi prima fare il cast, ma questo lo lascio a te.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.