Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    134

    [VB.NET] Ci sono limiti nell'aggiungere controlli a una windows form?

    Salve,
    volevo togliermi una semplice curiosità. Diciamo che non ho nell'immediato un problema specifico ma è un qualcosa che mi si è presentato tempo fa e che si potrebbe ripresentare (anche se un modo per aggirare il problema l'ho trovato).
    La mia domanda è:

    esiste un limite massimo di controlli che è possibile aggiungere a una finestra? In pratica mi è capitato che a un certo punto, avendo aggiunto un altro elemento (di qualsiasi tipo), nel momento in cui premevo F5 per compilare ed eseguire, ottenevo un errore il cui messaggio riassuntivo era "applicazione non valida". Togliendo un qualsiasi altro controllo riprendeva a funzionare. Aggiungendone un altro riecco nuovamente l'errore. Quindi ho pensato che forse non si possono aggiungere più di N controlli.
    (Allora superai il problema accorpando dei controlli in UserControl creati da me che, pur contenendo al loro interno decine di controlli windows, nell'applicazione con la form in questione contavano sempre "1").

    Qualcuno sa qualcosa a riguardo?

  2. #2
    Sinceramente non penso ci sia limiti di questo tipo.

    Forse e' il Designer che crasha qualche volta, ma che sia una limitazione della classe Form non penso.

    Per dimostrare che non e' una limitazione della classe Form fai cosi': prova a aggiungere dei controlli a runtime con un For vedrai che l'applicazione va' comunque

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    134
    giusto poco tempo fa ho "giocato" con i controlli a runtime... lì errori e crash non ne ho avuti, però secondo me a un certo punto non te li aggiunge più, nel senso che se ad esempio ne hai 1000 sulla form non te ne visualizza altri in più. (anke xkè come fare per contarli? :-/)
    mmm forse un'idea ce l'ho.
    Cmq x quanto riguarda la 1a parte della risposta beh, potrebbe essere un bug di Visual Studio magari... a questo nn avevo pensato.
    Peccato che uso proprio quello! :P
    grazie 1000 cmq :-)
    ciao

  4. #4
    Se non te li mostra per un sovraffolamento dei controlli e' un'altro discorso.

    prova a fare cosi'
    codice:
    For i As Integer = 1 To 1000
     Dim btn As New Button()
     btn.Text + "n. " & i
     Me.Controls.Add(btn)
    Next
    E verifichiamo se e' una limitazione della classe Form() o del Designer.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    134
    l'ho fatto un po' più grazioso (eeeh sono farmacista )

    codice:
    Dim v As Integer = 0
    For i As Integer = 1 To 8000
         Dim btn As New Button
         btn.Size = New Size(200, 40)
         btn.Location = New Point(32, v)
         btn.Text = "n. " & i
         Panel1.Controls.Add(btn)
         v += 40
    Next
    il risultato è ke se ne è tirati pure 8.000 (in tempi biblici però), x cui nn pare ci siano problemi per la Form... forse il problema è del Visual Studio a questo punto.
    Ripeto mi è capitato che appena ho aggiunto un controllo nn si compilava ed eseguiva più l'applicazione con F5. Tolto questo riprendeva a funzionare. Reinserendo un altro controllo (anche di diverso tipo) non funzionava più.

    Grazie per avermi risposto
    del resto credo che questa problematica può interessare non solo me...
    ciao

  6. #6
    Comunque forse ho detto na scemenzata quando ho detto che era un Bug del Designer.

    Perche' su MSDN ho letto un articolo sulla classe DesignSurface che accompagnato al CodeDom da' la possibilita' di hostare un Designer su una propria applicazione, quindi penso che sia un bug non del Designer ma il codice mal generato.
    In sostanza Visual Studio usa questo metodo.

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.