Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > .NET Languages
You last visited: Today at 17:12

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[C#] - ListBox such Funktion

Discussion on [C#] - ListBox such Funktion within the .NET Languages forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 13849
Join Date: Oct 2014
Posts: 673
Received Thanks: 219
[C#] - ListBox such Funktion

Hey Coders,
hab eine Frage, undzwar schreibe ich ein Programm in dem ich Daten abrufe und es in ein Object (Item) speicher.
Nun loope ich eine Liste mit den Objecten und füge jeweils 2 Eigenschaften in eine Listbox hinzu (index+ " - " + name).

Alles schön und gut, aber da es sehr viele Items sind muss natürlich eine Such funktion her, das hier und noch andere Methoden habe ich ausprobiert:
Code:
if(input != null)
            {
                list.Items.Clear();
                foreach(var item in list.Items)
                {
                    if (item.ToString().IndexOf(input, StringComparison.OrdinalIgnoreCase) >= 0)
                    {
                        list.Items.Add(item);
                    }
                }
            }
Allerdings klappt das einfach nicht, weil ich keinen Exakten Wert suche.

Beispiel:
In der Listbox steht zur Auswahl: "1 - Test" / "2 - est" / "3 - st"..
Was ich möchte ist, wenn ich in das search Field jetzt sagen wir mal Test eingebe, das alle 3 angezeigt werden, da die Character ja vorhanden sind, oder wenn ich 1 eingebe, das jedes Listbox Item angezeigt wird wo ne 1 vor kommt.
Ich hoffe man kann verstehen was ich meine.
Was noch gut wäre aber kein muss, wenn es eine schnelle Methode ist, da es über 10K items sind.
MfG

Edit:
Anscheinend bin ich noch nicht so Wach, is ja Montag! das list.Items.Clear() weg machen, dann findet man natürlich ein Match... Jetzt gehts super!
Lee Ki-Hwan is offline  
Old 02/16/2015, 22:19   #2
 
elite*gold: 0
Join Date: Feb 2009
Posts: 1,137
Received Thanks: 573
Noch 2 Verbesserungsvorschläge meinerseits:
1. Verwende list.BeginUpdate und list.EndUpdate um die Performance zu erhöhen
2. Dynamischer datentyp Var ist unschön, nimm doch lieber den Typen Object
warfley is offline  
Thanks
1 User
Old 02/17/2015, 08:33   #3

 
Aeh''s Avatar
 
elite*gold: 2
Join Date: May 2007
Posts: 3,642
Received Thanks: 432


Schau mal den ersten Post nach der Frage an.
Aeh' is offline  
Thanks
1 User
Old 02/17/2015, 09:14   #4
 
elite*gold: 13849
Join Date: Oct 2014
Posts: 673
Received Thanks: 219
Danke für die Antworten.
Das mit dem Dynamischen Datentyp hab ich schon geändert, ich werde mir die vorschläge mal angucken, und dann posten was ich habe, falls dann jemand danach sucht, dass er auch fündig wird
Lee Ki-Hwan is offline  
Old 02/17/2015, 22:13   #5




 
stotterer09's Avatar
 
elite*gold: 26
Join Date: Dec 2010
Posts: 2,628
Received Thanks: 1,816
vll. einen Baum verwenden und keine Liste damit sparst du dir verdammt viel Zeit beim Durchsuchen
Ich weiß leider nicht genau was du durchsuchst also kann ein Baum auch ne schlechte Idee sein
stotterer09 is offline  
Thanks
1 User
Old 02/18/2015, 11:03   #6

 
Aeh''s Avatar
 
elite*gold: 2
Join Date: May 2007
Posts: 3,642
Received Thanks: 432
Generell Anstatt einer Liste würde ich dir auch raten zu der ObservableCollection zu wechseln.
Diese aktualisieren sich im Hintergrund im Gegensatz zu einer Liste selbst.

Lies dir am besten mal den MSDN Eintrag dazu durch.
Aeh' is offline  
Thanks
1 User
Old 02/18/2015, 18:34   #7


 
Else's Avatar
 
elite*gold: 4
The Black Market: 166/0/0
Join Date: Feb 2008
Posts: 3,854
Received Thanks: 1,268
Else is offline  
Old 02/18/2015, 19:18   #8
 
elite*gold: 0
Join Date: May 2010
Posts: 86
Received Thanks: 27
Habe diese Lösung in einem meiner alten codes gefunden (für WPF):

Code:
private void txtBxSearch_TextChanged(object sender, TextChangedEventArgs e)
{
            string searchText = txtBxSearch.Text;

            // bzw. auch: LstBxItems.Items.Filter = (obj) =>
            LstBxItems.Items.Filter = delegate(object obj)
            {	
				if(String.IsNullOrEmpty(searchText))
					return true;
					
				Item item = obj as Item;

				if(item == null) 
                                        return false;
			
				string str = item.ToString();		
				
				if (String.IsNullOrEmpty(str))
					return false;
					
                                int index = str.IndexOf(searchText, 0,    
                                                    StringComparison.OrdinalIgnoreCase);
				
                return (index > -1);
            };
}
Hierbei werden alle Einträge die den text von txtBxSearch enthalten in der ListBox gefiltert. Der code wurde im TextChanged event implementiert.

Ein Beispiel für die implementierung in einem anderen context wäre folgendes:



Hoffe das ist wonach du gesucht hast.
Dungedragon is offline  
Thanks
1 User
Reply


Similar Threads Similar Threads
[HELP]Kostümystem clientside grob und funktion für funktion fail..
05/04/2014 - Metin2 Private Server - 2 Replies
Moin , ich hab das Kostümystem clientside erst funktion für funktion eingefügt, zeile für zeile aber auch bei "grob einfügen (copy and past) den gleichen scheiß fehler.. 0503 15:06:14429 :: CPythonPlayer::SetItemData(dwSlotIndex=5, itemIndex=1289) - Failed to item data 0503 15:06:14430 :: CPythonPlayer::SetItemData(dwSlotIndex=38, itemIndex=41010) - Failed to item data 0503 15:06:14548 :: CMapOutdoor::Load - LoadMonsterAreaInfo ERROR
[S] USA.net E-mail Spammer (Proxy Funktion & Account-listen Abruf Funktion) [B] e*g
04/24/2013 - elite*gold Trading - 0 Replies
Hallo, Ich Suche einen E-mail Spammbot der mit USA.net E-mail Adressen Arbeitet. den SMTP Herrauszufinden ist ja nicht Wirklich schwer. Er Sollte Proxy Funktionen haben (E-mail via Proxy versenden) Und er sollte eine liste mit Accounts (Format E-mail:Passwort) Einlesen und verwenden Können (Wenn eine E-mail nichtsmehr sendet wird eine 2te Genommen Also aus der Liste) Hoffe ihr könnt mir da Weiterhelfen ^^ Kontakt Bitte per PN.
[VB.NET] ListBox
11/01/2012 - .NET Languages - 7 Replies
Hi, ich hab ein Problem mit der auflistung von dem Inhalt einem *.txt Dokument. Und zwar wollte ich die Inhalte nacheinander auflisten. Hier der Aufbau der Datei als *.txt auf dem FTP Datei1.wav Datei2.xfj ...
C# listBox
04/18/2012 - .NET Languages - 9 Replies
Hi Ich arbeite gerade an einem MediaPlayer, da ich noch ein anfänger in C# bin und das relativ einfach zu sein scheint... ich hab auf umwegen eine Playlist wia listBox erstellen können, kann diese inzwischen auch speichern... mein letztes Problem ist jetzt: ich möchte die Playlist gerne von oben nach unten (und vllt zufällig, muss nich sein) abspielen lassen, also muss wenn ein Element der ListBox gelesen und im Player gespielt wurde, das darunterliegende, bzw. beim zufäligen...
Hilfe bei Send Funktion mit Stop Funktion
04/02/2011 - AutoIt - 11 Replies
Hallo Elitepvpers ich habe ein Problem und Mein Problem ist das mein Text einfach weiter schreibt wenn ich mit HotKey verwende... gib es keine Funktion das der Text einmal kommt und nicht wenn man einmal die HotKey das er 10 min das selbe schreibt :confused:



All times are GMT +1. The time now is 17:13.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.