Toon posts:

Controleren op gelijke items in een listbox in c#

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo,
Ik heb een programma geschreven in c#(visual studio 2015) waarin er waarden(geen constanten) in een listbox komen.

Is er iemand die weet hoe ik kan controleren op tweemaal of meerde gelijke waarden in een listbox?

Als ik op een drukknop druk moet hij mij volgende melding geven MessageBox.Show("meerdere keren dezelfde waarden"); als er twee of meerdere keren dezelfde waarden in mijn listbox zitten.

Alvast bedankt!

Alle reacties


Acties:
  • 0 Henk 'm!

  • L01
  • Registratie: December 2003
  • Laatst online: 12-10 10:52

L01

Lijst 1 kopieeren naar lijst 2, dan op lijst 2 de distinct functie van Linq uitvoeren. Daarna vergelijken op de count van beide lijstjes.

Hi, I'm a signature virus. Put me in your signature to help me spread.


Acties:
  • 0 Henk 'm!

  • TripleQ
  • Registratie: Juni 2004
  • Niet online
Iets met listbox.Items en foreach misschien?

Of je gebruikt de .Contains methode van een listbox

Lijkt me toch basic c#

[ Voor 27% gewijzigd door TripleQ op 02-01-2016 16:18 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb echt geen idee hoe ik dit zou kunnen doen om de verschillende items met elkaar te vergelijken.
Is er iemand die mij zou kunnen helpen?

Acties:
  • 0 Henk 'm!

  • NickThissen
  • Registratie: November 2007
  • Laatst online: 27-09 13:36
Hoe zou je het op papier doen? Bedenk daar eens 3 of 4 methodes voor en kies er dan een om in code om te zetten.

Mijn iRacing profiel


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Zou zelf niet weten hoe ik dit op papier zou moeten doen?
Heeft een listbox indexwaardes?
Als item op index 0 gelijk is aan item op index 1 of item op index
0 gelijk is aan item op index 2...

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op zaterdag 02 januari 2016 @ 18:17:
Heeft een listbox indexwaardes?
Als item op index 0 gelijk is aan item op index 1 of item op index
0 gelijk is aan item op index 2...
Doe eens gek en probeer het eens? Of nóg gekker: neem er de documentatie bij :?

[ Voor 12% gewijzigd door RobIII op 02-01-2016 18:40 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • BoAC
  • Registratie: Februari 2003
  • Laatst online: 10-10 17:12

BoAC

Memento mori

Gebruik linq icm group by waarbij de count groter moet zijn dan 1 :p en doe dit uiteraard op de source van je listbox en anders zoals eerder gezegd op de items van de listbox :)

Linq is even stoeien, maar daarna wil je niets anders meer en loop je niet meer te klooien met foreach loopjes en ifjes daarin :)

[ Voor 53% gewijzigd door BoAC op 02-01-2016 19:44 ]


Acties:
  • 0 Henk 'm!

  • BoringDay
  • Registratie: Maart 2009
  • Laatst online: 13-05 21:49
Object.Equals
MSDN: Object.Equals Method (Object) (System)

Lijsten doorlopen, lijkt me toch behoorlijk basic materie.

Hoewel ik nog nooit een regel c# heb geprogrammeerd lijkt me dit iets wat zeer eenvoudig moet zijn.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Iemand die weet waarom dit niet werkt, en een relevante oplossing kan bieden?
Stel nu dat ik het eerste item selecteer, dan zou hij toch moeten vergelijken met de tweede item

if(listbox.SelectedIndex==listbox.SelectedIndex+1)
{
MessageBox.Show("dezelfde waarde");
}

Acties:
  • 0 Henk 'm!

  • Dido
  • Registratie: Maart 2002
  • Laatst online: 19:54

Dido

heforshe

Kijk eens met een debugger wat je vergelijkt?

Wat is listbox.SelectedIndex? Ik vermoed dat dat een index is, waarschijnlijk een integer.

Wat verwacht je zelf als je afvraagt of x == x + 1, dus bijvoorbeeld 3 == 4?

Een klein beetje eigen uitzoekwerk zou al een hele hoop helpen.

Overigens is het vergelijken van ieder item met het volgende geen manier om te kijken of er dubbele items zijn, tenzij je ze gesorteerd hebt...

Heb je nou al eens naar Linq gekeken?

Wat betekent mijn avatar?


Acties:
  • 0 Henk 'm!

  • ManIkWeet
  • Registratie: November 2012
  • Laatst online: 21-08 08:59
Als je het goed doet hangt je ListBox via een binding aan een ListCollectionView of een ObservableCollection; met deze collecties kan je standaard list/array functies uitvoeren...

if (jouwBinding.Distinct().Count() != jouwBinding.Count)
{
Debug.WriteLine("Yaaay er is een dubbel object!");
}

Natuurlijk als je gebruik maakt van je eigen klasse moet je een aantal equality operators overriden, want anders wordt er standaard gekeken naar ReferenceEquals (dus geheugenadres).

Acties:
  • 0 Henk 'm!

  • Cyphax
  • Registratie: November 2000
  • Laatst online: 22:30

Cyphax

Moderator LNX
Verwijderd schreef op zaterdag 02 januari 2016 @ 15:19:
Is er iemand die weet hoe ik kan controleren op tweemaal of meerde gelijke waarden in een listbox?

Als ik op een drukknop druk moet hij mij volgende melding geven MessageBox.Show("meerdere keren dezelfde waarden"); als er twee of meerdere keren dezelfde waarden in mijn listbox zitten.
Waarom laat je het eigenlijk toe dat mensen twee keer dezelfde waarde toevoegen? Is het niet makkelijker om te checken bij het invoeren, of dat item al bestaat?
Oplossing voor dat idee (in vb.net maar dat kan je wel vertalen denk ik ;))

Saved by the buoyancy of citrus

Pagina: 1