Avatar billede steensommer Praktikant
16. april 2006 - 23:02 Der er 8 kommentarer og
1 løsning

Checke dubletter

Hej


Jeg arbejder med en windowsapplication med en brugerform: Form1.vb som består af textboxe i første "kolonne".

Disse textboxe indeholder et specifikt nummer (kan indholde tal og bogstaver) som kun må forekomme én gang.

Hvorledes kan man checke om tallet allerede eksisterer i et andet felt og såfremt dette er tilfældet slette dubletten?

vh Steen
Avatar billede thesurfer Nybegynder
16. april 2006 - 23:10 #1
Du kan lægge dem over i en array, og checke hver gang man indsætter et tal..

/theSurfer
Avatar billede arne_v Ekspert
16. april 2006 - 23:15 #2
jep

If Array.IndexOf(ditarray, tb.Text) >= 0 Then
Avatar billede steensommer Praktikant
16. april 2006 - 23:19 #3
Hej
Jeg er i gang med at omlægge et VBA projekt (Excel) til VB. Net men mit kendtskab til sidstnævnte er meget begrænset.
Hvad skal jeg præcist skrive når de textboxe det drejer sig om er textbox1, 2,3,4,9,12...?
vh Steen
Avatar billede arne_v Ekspert
16. april 2006 - 23:35 #4
så skal du nok have de relevante text boxe i et array / ArrayList og
så løbe den igennem og teste enkeltvist
Avatar billede steensommer Praktikant
16. april 2006 - 23:43 #5
Jeg er bange for at det ikke hjalp mig meget. Har du mulighed for at komme med et eksempel?
Avatar billede arne_v Ekspert
17. april 2006 - 00:19 #6
til inspiration:

Imports System
Imports System.Collections
Imports System.Drawing
Imports System.Windows.Forms

Namespace E
    Public Class MainForm
        Inherits Form
        Private textBox1 As TextBox
        Private textBox3 As TextBox
        Private textBox2 As TextBox
        Private textBox4 As TextBox
        Private checkList As ArrayList = New ArrayList
       
        Public Shared Sub Main
            Dim fMainForm As New MainForm
            fMainForm.ShowDialog()
        End Sub
       
        Public Sub New()
            MyBase.New
            InitializeComponent
        End Sub
       
        Private Sub InitializeComponent()
            textBox1 = New TextBox
            checkList.Add(textBox1)
            textBox2 = New TextBox
            checkList.Add(textBox2)
            textBox3 = New TextBox
            checkList.Add(textBox3)
            textBox4 = New TextBox
            checkList.Add(textBox4)
            SuspendLayout
            textBox1.Location = New Point(25, 50)
            textBox1.Size = New Size(100, 25)
            textBox1.Name = "textBox1"
            AddHandler textBox1.TextChanged, AddressOf TextBox1TextChanged
            textBox2.Location = New Point(25, 100)
            textBox2.Size = New Size(100, 25)
            textBox2.Name = "textBox2"
            AddHandler textBox2.TextChanged, AddressOf TextBox2TextChanged
            textBox3.Location = New Point(25, 150)
            textBox3.Size = New Size(100, 25)
            textBox4.Name = "textBox3"
            AddHandler textBox3.TextChanged, AddressOf TextBox3TextChanged
            textBox4.Location = New Point(25, 200)
            textBox4.Size = New Size(100, 25)
            textBox4.Name = "textBox4"
            AddHandler textBox4.TextChanged, AddressOf TextBox4TextChanged
            ClientSize = New Size(150, 250)
            Controls.Add(textBox1)
            Controls.Add(textBox2)
            Controls.Add(textBox3)
            Controls.Add(textBox4)
            Name = "MainForm"
            ResumeLayout(false)
        End Sub

        Private Sub TextBox1TextChanged(sender As System.Object, e As System.EventArgs)
            Check(textBox1)
        End Sub
       
        Private Sub TextBox2TextChanged(sender As System.Object, e As System.EventArgs)
            Check(textBox2)
        End Sub
       
        Private Sub TextBox3TextChanged(sender As System.Object, e As System.EventArgs)
            Check(textBox3)
        End Sub
       
        Private Sub TextBox4TextChanged(sender As System.Object, e As System.EventArgs)
            Check(textBox4)
        End Sub
       
        Private Sub Check(tb As TextBox)
            Dim i As Integer   
            For i = 0 To checkList.Count - 1
                Dim tb2 As TextBox = CType(checkList(i), TextBox)
                If tb.Text = tb2.Text And tb.Name <> tb2.Name Then
                    MessageBox.Show("Oops " + tb.Name + " is a duplicate")
                End If
            Next
        End Sub       
    End Class
End Namespace
Avatar billede steensommer Praktikant
17. april 2006 - 00:24 #7
Jøses for en omgang kodning - det var da en anelse nemmere i VBA ;0)
Jeg må vist lige kigge på det i morgen men tak for hjælpen. Du kunne jo i mellemtiden svare så får du selvfølgelig point igen :0)
Avatar billede arne_v Ekspert
17. april 2006 - 00:26 #8
det meste af det er kun for at få en form op at stå så jeg kunne teste at det
faktisk virker

det mest relevante er

        Private Sub TextBox4TextChanged(sender As System.Object, e As System.EventArgs)
            Check(textBox4)
        End Sub
     
        Private Sub Check(tb As TextBox)
            Dim i As Integer 
            For i = 0 To checkList.Count - 1
                Dim tb2 As TextBox = CType(checkList(i), TextBox)
                If tb.Text = tb2.Text And tb.Name <> tb2.Name Then
                    MessageBox.Show("Oops " + tb.Name + " is a duplicate")
                End If
            Next
        End Sub     

og et svar
Avatar billede steensommer Praktikant
17. april 2006 - 00:28 #9
Ja det hjalp jo en del også på forståelsen :0) Tak igen!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester