Eliminare label con tasto con stessa coordinata Y

di ors il
24 risposte
Chiedo una cosa, data la posizione Y di tutte le label e pulsanti , è possibile che premendo il pulsante, elimini tutte le label con y = al bottone?
io ci ho provato ma non funziona, cosa sbaglio?:

 Dim posizione As Point
 Dim posizione1 As Point

        button1= TryCast(sender, Button)
        posizione = Button1.PointToScreen(button1.Location)


        For i = 0 To GroupBox2.Controls.Count Step 1
            posizione1 = label.PointToScreen(label.Location)
            If label.Location.Y = button1.Location.Y Then

                GroupBox2.Controls.Remove(label)
            End If

        Next

24 Risposte

  • Posizione1 = label.PointToScreen(label.Location)
    Cosa è label ? dove lo hai definito ?
  • Posy = posy + 40
    posx = 5

    Label= New Label
    Label.text = "..."
    GroupBox2.Controls.Add(Label)
    label.Location = New Point(posx, posy)
    posx += (Label.Width + 6)


    Label= New Label
    Label.Text = "***"
    GroupBox2.Controls.Add(Label)
    Label.Location = New Point(posx, posy)
    posx += (Label.Width + 6)

    posy = posy - 6
    botton= New Button
    botton.Text = "X"
    GroupBox2.Controls.Add(botton)
    botton.Location = New Point(posx, posy)
    AddHandler botton.Click, AddressOf MyButtonx_Click


    Poi all'interno della sub My Buttonx_Click c'è il codice postato in precedenza
  • Non riesco a capire la logica che hai seguito, passo la palla a chi se ne intende più di me.
  • In poche parole io creo delle label in modo dinamico in una groupbox e pulsanti:

    io su ogni riga all'interno della gropbox ho in ogni riga due label e un pulsante. Io vorrei che quando clicco il pulsante, mi elimini le due label corrispondenti usando le coordinate. ho provato a farlo, ma non ci riesco
  • Io pensavo di: premento il tasto, leggere i controlli della groupbox, individuare la loro posizione, e confrontarli con quella del pulsante appena premuto, se la condizione si avvera, allora di eliminarla, altrimenti legge la label successiva
  • Io creerei 2 array di label ed uno di buttons, quando clicchi su un un button controlli l'indice ed elimini le label con lo stesso indice senza dover fare ricerche
  • Io individuo la posizione del bottone premuto:
    button1= TryCast(sender, Button)
    posizione = Button1.PointToScreen(button1.Location)

    So come si elimina la label:
    GroupBox2.Controls.Remove(label)

    Ma non so come leggere le label e trovare quelle con le coordinate del bottone
  • Stai cercando di risolvere il problema nel modo più lungo e difficile, ti ho indicato una strada più semplice, perché non la prendi in considerazione ? comunque prova ad allegare un esempio di progetto e vedo se ci riesco
  • Forse ho capito male io la strada consigliata da te, se io creo l'arrey con le due label, io dopo non devo comunque cercare l'arrey con la stessa posizione del pulsante?
  • Secondo me è più semplice fare così:
    1. valorizzi la proprietà TAG della nuova Label con il nome del pulsante a cui appartiene
    2. per eliminare la label cerchi tutte quelle con il nome del pulsante premuto

    Io ho fatto l'esempio del nome, ma puoi usare qualsiasi cosa che colleghi le label al proprio pulsante.
    Potresti ad esempio nominare la label con il prefisso del pulsante (in tal caso non servirebbe nemmeno usare la proprietà TAG)

    Ovviamente, devi assegnare un Name ad ogni controllo (mentre tu non lo fai).
  • Non riesco a inserire allegati ne in zip ne in rar, GIBRA provo subito il tuo suggerimento, vi faccio sapere se risolvo
  • Gibra ho provato a esemguire iltuo consiglio, quando creo la label e il pulsante provo a dare lo stesso NAME a tutti e tre. dopo che premo il pulsanti cerco la label con lo stesso name ("a"), ma mi si presente lo stesso errore di prima, cioè mi elimina solo l'ultima label, sicuramente sbaglio il for per cercare la label:

    button = TryCast(sender, Button)


    For i = 0 To GroupBox1.Controls.Count Step 1

    If label.Name = "a" Then

    GroupBox1.Controls.Remove(lbl)

    End If
    Next
  • Quale dei suggerimenti che ti ho dato hai messo in pratica?
    Se non mostri il codice modificato di come aggiungi i controlli, non possiamo capire se quello che usi per eliminarli è corretto.

    Dal codice che hai scritto, non mi pare tu ne abbia applicato correttamente nessuno.

    P.S. Ti raccomando di includere il codice usando il tag CODE!
  • Io con un bottone creo dinamicamente 2 label e un bottone ho provate a dare alle due label, e il tasto creato affianco lo stesso NAME : "a", ricerco le label con lo stesso name del bottone :
    
    Public Class Form1
        Dim bottone As New Button
        Dim i As Integer
        Dim j As Integer
        Dim posy As Integer = 0
        Dim posx As Integer = 0
        Dim label As New Label
        Dim btnx As New Button
        Dim idx As Integer
        
        Private Sub Button1_Click(sender As Object, e As EventArgs)
            posy = posy + 40
            posx = 5
    
            label = New Label
            Button1 = TryCast(sender, Button)
            label.Text = Button1.Text
            label.Name = "a"
            GroupBox1.Controls.Add(label)
            label.Location = New Point(posx, posy)
            posx += (label.Width + 6)
    
    
            label = New Label
            label.Text = Button1.Text
            label.Name = "a"
            GroupBox1.Controls.Add(label)
            label.Location = New Point(posx, posy)
            posx += (label.Width + 6)
    
            btnx = New Button
            btnx.Text = "X"
            btnx.Name = "a"
            GroupBox1.Controls.Add(btnx)
            btnx.Location = New Point(posx, posy)
            AddHandler btnx.Click, AddressOf MyButtonx_Click
        End Sub
    
        Private Sub MyButtonx_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
    
    
            btnx = TryCast(sender, Button)
    
            For i = 0 To GroupBox1.Controls.Count Step 1
    
                If label.Name = btnx.Name Then
    
                    GroupBox1.Controls.Remove(label)
    
                End If
            Next
        End Sub
    End Class
    
Devi accedere o registrarti per scrivere nel forum
24 risposte