Eliminare label con tasto con stessa coordinata Y

di il
24 risposte

Eliminare label con tasto con stessa coordinata Y

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

  • Re: Eliminare label con tasto con stessa coordinata Y

    Posizione1 = label.PointToScreen(label.Location)
    Cosa è label ? dove lo hai definito ?
  • Re: Eliminare label con tasto con stessa coordinata Y

    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
  • Re: Eliminare label con tasto con stessa coordinata Y

    Non riesco a capire la logica che hai seguito, passo la palla a chi se ne intende più di me.
  • Re: Eliminare label con tasto con stessa coordinata Y

    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
  • Re: Eliminare label con tasto con stessa coordinata Y

    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
  • Re: Eliminare label con tasto con stessa coordinata Y

    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
  • Re: Eliminare label con tasto con stessa coordinata Y

    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
  • Re: Eliminare label con tasto con stessa coordinata Y

    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
  • Re: Eliminare label con tasto con stessa coordinata Y

    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?
  • Re: Eliminare label con tasto con stessa coordinata Y

    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).
  • Re: Eliminare label con tasto con stessa coordinata Y

    Non riesco a inserire allegati ne in zip ne in rar, GIBRA provo subito il tuo suggerimento, vi faccio sapere se risolvo
  • Re: Eliminare label con tasto con stessa coordinata Y

    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
  • Re: Eliminare label con tasto con stessa coordinata Y

    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!
  • Re: Eliminare label con tasto con stessa coordinata Y

    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