search i listView efter ord

I dette forum kan du stille og svare på spørgsmål om C# programmering. Alle med en interesse for C# er velkommen!
Besvar
offenbach1
Entusiast
Entusiast
Indlæg:28
Tilmeldt:13. mar 2016, 10:31
search i listView efter ord

Indlæg af offenbach1 » 25. dec 2016, 20:53

hej ville høre om der er nogen der kan hjælpe mig
jeg ville gerne søge efter et ord i listView

jeg ville gerne kunne skrive et ord i en textbox og så trykke på en søge knap
og så afmærker den ordet i listView

mvh remi

jeg coder i c#

SvenH
Begynder
Indlæg:9
Tilmeldt:20. dec 2016, 15:34

Re: search i listView efter ord

Indlæg af SvenH » 25. dec 2016, 23:44

Første metode laver et nyt ListViewItem med tekst fra en TextBox kaldet textBox1 og tilføjer dette item til dit listview.

Anden metode laver et nyt ListViewItem med tekst fra en TextBox kaldet textBox2 og søger igennem dit listview efter et object med samme text. Finder den lignende tekst, bliver det farvet rødt.

Kode: Vælg alt

 private void button1_Click(object sender, EventArgs e)
        {
            var newObject = new ListViewItem(textBox1.Text);
            listView1.Items.Add(newObject);
        }

        private void button2_Click(object sender, EventArgs e)
        {
            var searchObject = new ListViewItem(textBox2.Text);
            foreach (ListViewItem lvw in listView1.Items)
            {
                if (lvw.Text == searchObject.Text)
                {
                    lvw.BackColor = Color.Red;
                }
            }
        }
Håber det kan bruges.

Denne feature kan jo udvides en del, ved f.eks. at at scrolle ned til hvor ordet er, hvis du har en lang liste. Er der flere lignende ord, burde den måske også fokusere på det næste hver gang du trykker på knappen.

offenbach1
Entusiast
Entusiast
Indlæg:28
Tilmeldt:13. mar 2016, 10:31

Re: search i listView efter ord

Indlæg af offenbach1 » 26. dec 2016, 00:42

hej SvenH mange tak for dit svar det dur fint når jeg tilføjer et ord med butten 1 til listView1 og søger med butten2 men når jeg prøver at gøre det med de filer jeg tilføjer så dur det ikke. jeg har pakket programmet ned og tilføjet det så vis du har tid på et tidpungt og gider kan du så ikke prøve at se om du kan se hvor det går galt henne mvh remi
Vedhæftede filer
jpg.rar
(211.85KiB)Downloadet 299 gange

SvenH
Begynder
Indlæg:9
Tilmeldt:20. dec 2016, 15:34

Re: search i listView efter ord

Indlæg af SvenH » 26. dec 2016, 01:07

prøv at ændre dit foreach loop til det her

Kode: Vælg alt

                foreach (string file in nfoFiles)
                {
                    ListViewItem lvi = new ListViewItem(file);
                    listView1.Items.Add(lvi);
                }
Jeg fik det til at virke. Problemet skyldes at den metode vi bruger til at sammenligne med skal bruge to ens objekter før at det virker. Det er muligt at lave en mere generisk løsning, men det ville kræve mere arbejde.

Skriv endelig igen, hvis der stadig er problemer.

offenbach1
Entusiast
Entusiast
Indlæg:28
Tilmeldt:13. mar 2016, 10:31

Re: search i listView efter ord

Indlæg af offenbach1 » 26. dec 2016, 01:42

hej SvenH har prøvet at kopier det ind men kan ikke rigtig få det til at virke har du mulig for at sætte det ind i programmet og sende det som rar fil ps du må undskylde besværet men er lidt ny inde for programering mvh remi

SvenH
Begynder
Indlæg:9
Tilmeldt:20. dec 2016, 15:34

Re: search i listView efter ord

Indlæg af SvenH » 26. dec 2016, 10:10

Når du søger efter en string, så skal de være identiske før at denne kode giver dem farve. Dvs. at når du sætter strings ind som "c:\newfolder\projectx\reol.jpg" så skal du have alt med inden for citationstegnene, altså - c:\newfolder\projectx\reol.jpg . Hvis de ikke er identiske sker der altså ikke noget.

Jeg forestiller mig at du måske ønsker en løsning hvor du kan nøjes med at skrive "reol.jpg" og så vil den farve hele fil stien en bestemt farve? Er dette tilfældet så tag et kig på koden herunder hvor jeg har lavet en lidt mere udførlig løsning.

Kode: Vælg alt

     private void button2_Click(object sender, EventArgs e)
        {
            var searchString = new ListViewItem(textBox2.Text);
            foreach (ListViewItem lvw in listView1.Items)
            {
                string[] array = lvw.Text.Split('\\');

                foreach (var word in array)
                {
                    if (word == searchString.Text)
                    {
                        lvw.BackColor = Color.Red;
                    }
                }
            }
        }
Du burde måske ændre din filsøgnings algoritme til det her, så kan du sætte den til at søge efter forskellige typer af billedfiler.

Kode: Vælg alt

                var nfoFiles = Directory.GetFiles(dir.SelectedPath, "*.*", SearchOption.AllDirectories)
                    .Where(s => s.EndsWith(".jpeg") || s.EndsWith(".jpg"));
Forresten, så før du kan bruge koden lige over, så skal du huske at skrive "using System.Linq;" øverst, da du ellers vil mangle et bibliotek og programmet derfor vil melde fejl.

Her er så billedet af hvordan det ser ud.
Vedhæftede filer
HelpProject.rar
(215.09KiB)Downloadet 274 gange
helppic1.jpg
helppic1.jpg (27.43KiB)Vist 6443 gange

offenbach1
Entusiast
Entusiast
Indlæg:28
Tilmeldt:13. mar 2016, 10:31

Re: search i listView efter ord

Indlæg af offenbach1 » 26. dec 2016, 13:44

Hej SvenH 1000 tak for hjælpen

Besvar