Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117

    [VB.Net] - Scovare doppioni in textbox

    Eccomi di nuovo! ( Non ne potete + vero? :P...verrò bannata )

    Sto cercando di trovare il modo per fare una cosa che inizialmente sembrava semplice ma si sta rivelando un calvario :°

    Ho una serie indefinita di textbox (facciamo finta che siano un numero x=10) vorrei al click di un bottone controllare se in 2 (o più) di queste 10 textbox c'è lo stesso valore!


    Es:
    txtBox1.text="ciao"
    txtBox2.text="mi"
    txtBox3.text="chiamoo"
    txtBox4.text="Veronica!"
    txtBox5.text="ciao"

    In questo caso vorrei "intercettare" il fatto che txtBox1 e txtBox5 anno lo stesso valore text (cosa che nel mio programma non deve capitare)

    Grazie gente!

  2. #2
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117
    per ora ho coniato questo e sembra andare!
    Se però esistono metodi + rapidi e meno intricati son qui

    codice:
    For Each controllo As Control In Me.Controls
                If TypeOf controllo Is TextBox Then
                    Dim txt As TextBox = controllo
                    Dim testo As String = txt.Text
                    For Each controllo2 As Control In Me.Controls
                        If TypeOf controllo2 Is TextBox Then
                            Dim txt2 As TextBox = controllo2
                            If controllo2.Name <> controllo.Name Then
                                If txt2.Text = txt.Text Then
                                    MsgBox("Il testo di " & txt.Name & "è uguale a quello di " & txt2.Name)
                                    Exit Sub
                                End If
                            End If
                        End If
                    Next
                End If
            Next

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    116
    Potresti, per ottimizzarlo, usare un "trucchetto"

    chiamando tutte le textbox con lo stesso nome numerato, potresti ricavarle molto facilmente con il comando FindControl(nomeControllo) che prende una stringa in ingresso, e dunque puoi ricercare nomi creati dinamicamente, ad esempio in un for:

    For i As Integer = 0 To x
    Dim txt As textBox = Me.FindControl("textBox" & i)
    Next

    In questo modo puoi anche fare meno controlli, perchè per ogni textbox non dovresti controllare tutte le altre textbox, ma solo quelle successive, in quanto il confronto con quelle antecedenti è già stato fatto:

    For i As Integer = 0 To x
    - Dim txt As textBox = Me.FindControl("textBox" & i)
    - For j As Integer = i+1 To x
    - - Dim txt2 As textBox = Me.FindControl("textBox" & j)
    - - If txt.Text = txt2.text then
    - - - 'fai quello che devi fare
    - - End if
    - Next
    Next

  4. #4
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117
    ok ora spulcio un po tutto il tuo codice

    anche perchè mi son resa conto che la struttura è un po diversa dall'esempio che ho fatto!

    Io ho un numero indefinito di GROUPBOX che contengono al loro interno UNA textbox e devo comparare quella textbox di ogni groupbox!

    come hai detto tu (almeno) ho strutturato tutto a numeri progressivi!

    groupBox1
    textBox1
    groupBox2
    textBox2

    ....

    groupBox 1000
    textBox1000

    per ora grazie vediamo che ne tiro fuori xD

  5. #5
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117
    ps: la funzone FindControl me la segna come NON membro! devo crearmela io?

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    970
    E si, ma devi sapere anche quali e quante sono le textBox doppie solo se ci sono delle doppie?
    Sbagliare è umano, perseverare è diabolico.

  7. #7
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Originariamente inviato da Veronica80
    come hai detto tu (almeno) ho strutturato tutto a numeri progressivi!

    groupBox1
    textBox1
    groupBox2
    textBox2

    ....

    groupBox 1000
    textBox1000
    A me sembra una scelta davvero infelice (ma è solo la mia opinione ).
    Vattelapesca poi a ricordarti cosa è e cosa serve il textBox490, il groupBox 671, etc...

    Preferivo la tua prima routine...

    Originariamente inviato da Veronica80
    Io ho un numero indefinito di GROUPBOX che contengono al loro interno UNA textbox e devo comparare quella textbox di ogni groupbox!

    Quindi lo scenario è diverso da quello ipotizzato inizialmente,
    allora probabilmente avrai bisogno di qualcosa di più mirato.

    Getto un sassolino...
    Non sarebbe forse meglio verificare il valore nel textBox PRIMA di accettarlo?
    Ad esempio, usando l'evento Validate, magari utilizzando una collection per tenere l'elenco dei valori presenti?

    Avendo altre informazioni si potrebbe analizzare meglio la questione.
    Da dove vengono quei dati? Sono persistenti? etc........




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.