Jag har en textbox och en listbox. (Anta att listboxen innehåller totalt hundra olika Items.) När jag i textboxen börjar mata in tecken vill jag få en omedelbar reaktion i listboxen på så sätt att den skall lista listboxens Item eller Items som bäst stämmer överens med mitt hittils inmatade tecken i textboxen. Tex om jag matar in "P" så skall listboxen fokusera på allt som börjar på "P" och automatiskt scrolla upp till det första Item som just börjar på "P". Om jag fortsätter att skriva in ett "e" i min textbox så innehåller ju textboxen "Pe" och då skall listboxen på nytt reagera med alla överneskommande Items som börjar med "Pe" och lista det första av dessa Items överst i listboxen. Jo, jag har gjort en liknande men det är ganska simpelt. Tack för svar. SearchList== ListBox TackHur får jag en listbox att reagera på textboxinmatningar?
Till textboxen har jag händelsen OnTextChanged()
Min metod för detta i klassen:
private void txtSearch_TextChanged(object sender, System.EventArgs e)
{
//Vad skriver jag här för att få listboxen att reagera rätt?
}
Problemet hör till en Pocket PC applikation.
Någon som har en bra idé?Sv: Hur får jag en listbox att reagera på textboxinmatningar?
1. Spara undan orginallistan med Items (så du kan återställa)
2. i Text_changed eller Key_up så läser du av vad som står i TextBoxen, sen loopar du igenom alla orginal items och jämför om de börjar på textboxens värde, (ev kan du ju göra Case Insensetive jämförelse här om du vill).
Om värdet matchar, spara i en ny lista.
När du gått igenom alla värden i orginal listan sätter du helt enkelt Listboxens Items till den nya listan.
Glöm bara inte att du måste hela tiden jämföra med orginallistan, och inte med de värdena som finns i Items, eftersom de kommer förändra sig...
*Edit: undrar om text_changed verkligen avfyras förrän du lämnar textboxen, så det kan vara bättre att lyssna på KeyUpSv: Hur får jag en listbox att reagera på textboxinmatningar?
Får inte till att loopa genom min listboxs Items på det sätt du beskriver. Kan du knuffa på mig igen?
peterSv: Hur får jag en listbox att reagera på textboxinmatningar?
searchField=TextBox
string[] listValues=Orginal listan med värden från searchList.Items (Om listboxen får nya värden utifrån måste alltså denna lisa uppdateras)
object[] currentValues=Lista med värden motsvarande de i ListBoxen.
string tmpTxt=this.searchField.Text.ToLower();
ArrayList tmpValues=new ArrayList();
if (!tmpTxt.Equals(""))
{
for(int i=0;i<listValues.Length;i++)
{
if(listValues[i].ToLower().IndexOf(tmpTxt)>=0)
{
tmpValues.Add(listValues[i])
}
}
this.currentValues=tmpValues.ToArray();
this.searchList.Items.Clear();
this.searchList.Items.AddRange(currentValues);
this.searchList.Refresh();
}
Sv: Hur får jag en listbox att reagera på textboxinmatningar?
Du knuffade mig i rätt riktning även om jag fick ta till lite andra lösningar för att få det att funka.
Peter