Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20
  1. #1

    [VS 2010 WINFORM] creare oggetti con for to next (eternauta 1 problema)

    Buongiorno a tutti,

    Mi sono da poco messo su visual studio 2010, quindi vi prego di perdonarmi se vi farò domande stupide.. Capirò se non avete voglia di rispondermi. Cmq grazie ai vostri consigli e domande già mi sono chiare un bel pò di cosette, complimenti davvero.

    Ora passiamo al mio problema: sto cercando di sviluppare un programmino molto complicato che potrebbe accellerare i tempi del mio lavoro. Come vi ho detto, grazie al forum, alcuni problemi già li ho risolti, ma altri duri ostacoli mi aspettano e spero di contare su di voi!! Attualmente ho la necessita di creare da codice diversi oggetti (loabel, text). Sono riuscito a risolvere il problema con un pulsante che crea ad ogni click gli oggetti; questo è il codice:

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim labsal As New Label
    Dim capsal As New TextBox
    Dim nome As String


    Me.Panel1.Controls.Add(labsal)
    Me.Panel1.Controls.Add(capsal)

    r = r + 30
    labsal.Top = labsal.Top + r
    labsal.Left = 10
    labsal.BackColor = Color.Ivory
    capsal.Top = labsal.Top
    capsal.Left = labsal.Left + 160
    numero_sale = numero_sale + 1
    labsal.Text = "sala " & numero_sale

    End Sub


    In realtà non è la soluzione 'elegante' che cercavo: sarebbe più opportuno creare un text box dove inserire un numero che sarà poi il numero di oggetti che devono essere creati. Ho buttato giù quindi questo codice:

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim obj As New Label()
    Dim nome As String

    If sale = 0 Then
    MsgBox("il valore deve essere superiore a zero")
    End If

    y = 30

    If sale > 0 Then
    For i = 1 To sale

    nome = "obj" & i
    Me.Controls.Add(obj)

    obj.Top = obj.Top + y
    obj.BackColor = Color.BlueViolet
    obj.Name = nome
    obj.Text = obj.Name
    y = y + 30

    Next i
    End If
    End Sub

    Private Sub TextBox1_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged


    sale = TextBox1.Text
    Label1.Text = sale

    End Sub


    End Class


    Tuttavia, il risultato ottenuto e solo l'ultimo oggetto..

    Avete qualche idea??

    Vi ringrazio anticipatamente.

    Eternauata

  2. #2
    Ti invito a modificare al più presto il titolo come da regolamento, altrimenti sarò costretto a chiudere la discussione.
    Chi non cerca trova.

  3. #3
    il problema è la dichiarazione della nuova Label che manca per ogni ciclo.. Fai così:

    codice:
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim nome As String
    
    If sale <= 0 Then
        MsgBox("il valore deve essere superiore a zero")
        exit sub
    End If
    
    y = 30
    
    For i = 1 To sale
    
       Dim obj As New Label()
       nome = "obj" & i
       Me.Controls.Add(obj)
    
       obj.Top = y
       obj.BackColor = Color.BlueViolet
       obj.Name = nome
       obj.Text = obj.Name
       y = y + 30
    
    Next i
    End Sub 
    
    Private Sub TextBox1_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
    
    
    sale = TextBox1.Text
    Label1.Text = sale
    
    End Sub
    Michele

  4. #4
    Grazie mille, era proprio quello che cercavo di fargli fare. Non sarei mai arrivato a pensare che si potesse dichiarare un oggetto in una qualsiasi parte del programma... mi servirà trovare un bel manuale!


    grazie ancora.

  5. #5
    vieni dal pascal?

    per iniziare mi han passato questa guida, fatta molto bene, che ti rigiro:

    guida Vb.net
    Michele

  6. #6
    Utente di HTML.it L'avatar di ShaleN
    Registrato dal
    Aug 2010
    Messaggi
    517
    Originariamente inviato da michelecali
    ...guida Vb.net
    Il solito buon vecchio Totem

    Le vie del Signore sono infinite. È la segnaletica che lascia a desiderare.
    La luce viaggia più veloce del suono. Per questo alcune persone sembrano brillanti finchè non parlano.
    Occhio per occhio uguale... occhio al quadrato

  7. #7
    Originariamente inviato da eternauta
    Grazie mille, era proprio quello che cercavo di fargli fare. Non sarei mai arrivato a pensare che si potesse dichiarare un oggetto in una qualsiasi parte del programma... mi servirà trovare un bel manuale!


    grazie ancora.
    Caspita.. se si capisce cosi non ho speranza di cambiare la mia mente a digramma di flusso.

    Grazie per la dritta!

  8. #8

    evoluzione del problema

    Ciao a tutti..
    continuo a scrivere qui perché il secondo problema è correlato a quanto già esposto.
    Grazie alla dritta di michelecali (ps: mi sono messo messo sotto con il totem) ho perfezionato il mio programmino cosi:


    codice:
    Public Class Form1
        Dim memx As Integer
        Dim sale As Integer
    
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _System.EventArgs) Handles Button1.Click
            Dim y As Integer
    
    
            If sale = 0 Then
                MsgBox("il valore deve essere superiore a zero")
                Exit Sub
            End If
    
            y = 30
    
            For i = 1 To sale
    
                Dim obj As New Label()
                Dim num_posti As New TextBox
                Dim è3d As New CheckBox()
                Dim èDgt As New CheckBox()
                Me.Panel1.Controls.Add(obj)
                Me.Panel1.Controls.Add(num_posti)
                Me.Panel1.Controls.Add(è3d)
                Me.Panel1.Controls.Add(èDgt)
                num_posti.Left = num_posti.Left + 130
                num_posti.Name = "num_posti" & i
                num_posti.Width = 50
                num_posti.Top = y
                obj.Top = y
                obj.Left = obj.Left + 10
                obj.BackColor = Color.Orange
                obj.Name = "obj" & i
                obj.Text = "sala " & i
                obj.TextAlign = ContentAlignment.MiddleCenter
                è3d.Top = y
                è3d.Width = 50
                è3d.Left = 250
                è3d.Name = "è3d" & i
                è3d.Text = "3D"
                èDgt.Top = y
                èDgt.Left = 350
                èDgt.Text = "Dgt"
                èDgt.Name = "èDgt" & i
                y = y + 30
            Next i
            Beep()
            salva.Visible = True
        End Sub
    
    
        Private Sub sale_TextChanged(ByVal sender As System.Object, ByVal e As_ System.EventArgs) Handles input_sale.TextChanged
            sale = input_sale.Text
        End Sub
    
    
    
    
        Private Sub salva_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)_ Handles salva.Click
            Dim cin(sale, 3) As Integer
    
            For i = 1 To sale - 1
                'cin(i, 0) = num_posti&i.text
    
            Next
    
        End Sub
    
    
    End Class
    Nel momento che creo gli oggetti su panel1, faccio comparire anche un tasto salva che,una volta premuto, dovrebbe riportare tutti i dati inseriti negli oggetti obj(I), num_posti(I), è3d(I),èDg(I) in un array che poi (ma solo fra molto tempo) dovrò salvare in qualche maniera che ora ignoro. I dati però ovviamente sono irraggiungibili, in quanto sono dichiarati in un oggetto differente (tralasciando che la sintassi num_posti&i non funziona ahime). Tuttavia se dichiari gli oggetti 'virtuali' nella classe base, si creano solo gli ultimi oggetti (logicamente questo però, continuo a non capirlo).

    Saluto e ringrazio

  9. #9
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    252
    intanto che fai le tue prove mi fai una cortesia che ho un problema legato all'aggiunta di button nei panel???

    quando testi il tuo programma aggiungi 1000 o piu oggetti e mi fai sapere se te li sovrappone o se il panel scrolla fine alla fine perfettamente???

    grazie

  10. #10
    Originariamente inviato da garzone
    intanto che fai le tue prove mi fai una cortesia che ho un problema legato all'aggiunta di button nei panel???

    quando testi il tuo programma aggiungi 1000 o piu oggetti e mi fai sapere se te li sovrappone o se il panel scrolla fine alla fine perfettamente???

    grazie
    Ciao,

    Ho fatto la prova con 1000 oggetti e nessun problema di sorta. Il panel scrolla fino al millessimo senza sovraposizione.

    A dispo.

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.