Eliminare label con tasto con stessa coordinata Y

di il
24 risposte

24 Risposte - Pagina 2

  • Re: Eliminare label con tasto con stessa coordinata Y

    gibra ha scritto:


    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
    Però facendo degli array non c'è bisogno di cercare, quando clicchi sul pulsante con tag = 5 puoi eliminare le label con indice 5
  • Re: Eliminare label con tasto con stessa coordinata Y

    Non devo comunque cercare tra tutti gli array chi ha tag 5?
  • Re: Eliminare label con tasto con stessa coordinata Y

    patel ha scritto:


    Però facendo degli array non c'è bisogno di cercare, quando clicchi sul pulsante con tag = 5 puoi eliminare le label con indice 5
    E come faresti, tu?
    Puoi proporre del codice di esempio?
  • Re: Eliminare label con tasto con stessa coordinata Y

    Questo è quello che intendevo io:
    
    Public Class frmControlli
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Dim mylabel As New Label
            Dim btnx As New Button
            Dim posy As Integer = 0
            Dim posx As Integer = 0
    
            posy = posy + 40
            posx = 5
    
            mylabel = New Label
            Button1 = TryCast(sender, Button)
            mylabel.Text = "Label1 di " & Button1.Text
            mylabel.Tag = "a"
            mylabel.Name = "Label1"
            GroupBox1.Controls.Add(mylabel)
            mylabel.Location = New Point(posx, posy)
            posx += (mylabel.Width + 6)
    
            mylabel = New Label
            mylabel.Text = "Label2 di " & Button1.Text
            mylabel.Tag = "a"
            mylabel.Name = "Label2"
    
            GroupBox1.Controls.Add(mylabel)
            mylabel.Location = New Point(posx, posy)
            posx += (mylabel.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)
            Dim btnx As Button = TryCast(sender, Button)
            Try
                For i = GroupBox1.Controls.Count - 1 To 0 Step -1
                    'Debug.Print(GroupBox1.Controls(i).Name)
                    If TypeOf GroupBox1.Controls(i) Is Label Then
                        If GroupBox1.Controls(i).Tag.ToString = btnx.Name Then
                            GroupBox1.Controls.Remove(GroupBox1.Controls(i))
                        End If
                    End If
                Next i
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
        End Sub
    End Class
    
  • Re: Eliminare label con tasto con stessa coordinata Y

    Io farei così:
    Public Class Form1
        Dim ind As Integer = 0
        Dim pulsanti(5) As Button, Etichette1(5) As Label, Etichette2(5) As Label
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            Dim altezza As Integer = 20, larghezza As Integer = 60, posx As Integer, posy As Integer
            For i As Integer = 1 To 5
                pulsanti(i) = New Button
                posx = 20
                posy = 20 + i * (altezza + 5)
                pulsanti(i).Location = New Point(posx, posy)
                pulsanti(i).Size = New Size(larghezza, altezza)
                pulsanti(i).Text = i.ToString
                pulsanti(i).TabIndex = i
                Me.Controls.Add(pulsanti(i))
                AddHandler pulsanti(i).Click, AddressOf BUTTON1Click
                Etichette1(i) = New Label
                Etichette2(i) = New Label
                Etichette1(i).BorderStyle = BorderStyle.FixedSingle
                Etichette2(i).BorderStyle = BorderStyle.FixedSingle
                Etichette1(i).Location = New Point(posx + larghezza + 20, posy)
                Etichette2(i).Location = New Point(posx + larghezza + 100, posy)
                Etichette1(i).Size = New Size(larghezza, altezza)
                Etichette1(i).Text = i.ToString
                Etichette2(i).Size = New Size(larghezza, altezza)
                Etichette2(i).Text = i.ToString
                Me.Controls.Add(Etichette1(i))
                Me.Controls.Add(Etichette2(i))
            Next
        End Sub
        Private Sub BUTTON1Click(ByVal sender As Object, ByVal e As System.EventArgs)
            ind = CType(sender, Button).TabIndex
            Etichette1(ind).Text = "Cancellata"
            Etichette2(ind).Text = "Cancellata"
        End Sub
    
    End Class
  • Re: Eliminare label con tasto con stessa coordinata Y

    Patel, io non so quante label ci saranno, ma se incremento la i ogni volta che premo il pulsante per crearle, non funziona, mentre la soluzione di gibra funziona, ma facendo cosi, non mi elimina solo le 2 label che si trovano affianco al bottone, ma tutte le label che provengono da uno stesso bottone.
    provo a modificare le soluzioni
  • Re: Eliminare label con tasto con stessa coordinata Y

    Basta dichiarare la i prima della sub
    Public Class Form1
        Dim ind As Integer = 0, I As Integer = 0 '<<<<<<<<
        Dim pulsanti(50) As Button, Etichette1(50) As Label, Etichette2(50) As Label
        Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
            Dim altezza As Integer = 20, larghezza As Integer = 60, posx As Integer, posy As Integer
            I += 1
            pulsanti(I) = New Button
            posx = 20
            posy = 20 + I * (altezza + 5)
            pulsanti(I).Location = New Point(posx, posy)
            pulsanti(I).Size = New Size(larghezza, altezza)
            pulsanti(I).Text = I.ToString
            pulsanti(I).TabIndex = I
            Me.Controls.Add(pulsanti(I))
            AddHandler pulsanti(I).Click, AddressOf BUTTON1Click
            Etichette1(I) = New Label
            Etichette2(I) = New Label
            Etichette1(I).BorderStyle = BorderStyle.FixedSingle
            Etichette2(I).BorderStyle = BorderStyle.FixedSingle
            Etichette1(I).Location = New Point(posx + larghezza + 20, posy)
            Etichette2(I).Location = New Point(posx + larghezza + 100, posy)
            Etichette1(I).Size = New Size(larghezza, altezza)
            Etichette1(I).Text = I.ToString
            Etichette2(I).Size = New Size(larghezza, altezza)
            Etichette2(I).Text = I.ToString
            Me.Controls.Add(Etichette1(I))
            Me.Controls.Add(Etichette2(I))
        End Sub
    
        Private Sub BUTTON1Click(ByVal sender As Object, ByVal e As System.EventArgs)
            ind = CType(sender, Button).TabIndex
            Etichette1(ind).Text = "Cancellata"
            Etichette2(ind).Text = "Cancellata"
        End Sub
    Rnd Class
  • Re: Eliminare label con tasto con stessa coordinata Y

    ors ha scritto:


    mentre la soluzione di gibra funziona, ma facendo cosi, non mi elimina solo le 2 label che si trovano affianco al bottone, ma tutte le label che provengono da uno stesso bottone.
    Mi pare sia proprio quello che hai chiesto nel primo post:

    ors ha scritto:


    Ma non so come leggere le label e trovare quelle con le coordinate del bottone
  • Re: Eliminare label con tasto con stessa coordinata Y

    Scusa gibra, sbagliando, ho dato per scontato una cosa, perché con un tasto si creano le due label e affianco a loro un altro tasto. Con il secondo tasto si eliminano le label nella sua stessa riga. Ma a QUESTO HO RISOLTO FACENDO:
    
            Dim button As Button = TryCast(sender, Button)
            Dim posizione As Point
            Dim posizione1 As Point
            posizione = button.PointToScreen(button.Location)
    
            Try
                For i = GroupBox1.Controls.Count - 1 To 0 Step -1
                
                    If TypeOf GroupBox1.Controls(i) Is Label Then
                        posizione1 = label.PointToScreen(label.Location)
                        If GroupBox1.Controls(i).Location.Y = button.Location.Y Then
                            GroupBox1.Controls.Remove(GroupBox1.Controls(i))
                            GroupBox1.Controls.Remove(button)
                        End If
    
                    End If
                Next i
    
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
    
  • Re: Eliminare label con tasto con stessa coordinata Y

    Ora devo solo capire come far scalare il tutto, perché se elimino una riga intera( le due label e il tasto), in mezzo ad un elenco, rimane un buco
Devi accedere o registrarti per scrivere nel forum
24 risposte