Autor Beitrag
Talemantros
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 444
Erhaltene Danke: 2

Win7 Proff 64bit
C# (VS2013)
BeitragVerfasst: So 02.03.14 17:20 
Hallo zusammen,
ich möchte gern, die Ordner von 2 Laufwerken in einer Listbox anzeigen lassen.
Weiterhin soll dann gesucht werden können, ob ein Wert gefunden wurde. Ich möchte aber nicht den genauen Inhalt eingeben müssen, sondern würde gern auch über Fragmente suchen.
Bekomme es aber leider nicht hin.
Im MOment lese ich beide Ordner in ein Array ein und füge sie einer generischen Liste hinzu, die ich in der Listbox anzeige.
Mit dem Suchen stehe ich völlig auf dem Schlauch?!

Sollte meine Idee ans Ziel zu kommen völlig falsch sein, würde ich mich auch über einen anderen Denkansatz freuen.

Vielen Dank

Gruß
Daniel

ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace OrdnerAuslesen2
{
    public partial class Form1 : Form
    {
        List<string> neueListe = new List<string>();
        
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            DirectoryInfo ordnerNamen = new DirectoryInfo(@"S:\OBDMV\");
            DirectoryInfo ordnerNamen2 = new DirectoryInfo(@"S:\BDMV\");

            DirectoryInfo[] eingelesen = ordnerNamen.GetDirectories();
            DirectoryInfo[] eingelesen2 = ordnerNamen2.GetDirectories();

            foreach (DirectoryInfo info in eingelesen)
                neueListe.Add(info.Name);

            foreach (DirectoryInfo info in eingelesen2)
                neueListe.Add(info.Name);

            neueListe.Sort();
            foreach (string ordner in neueListe)
            {
                lstOrdner.Items.Add(ordner);                
            }
        }

        private void txtSuche_TextChanged(object sender, EventArgs e)
        {

        }

        private void Form1_Activated(object sender, EventArgs e)
        {
            txtSuche.Focus();
        }

    }
}
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: So 02.03.14 17:34 
Hallo!

Das Suchen nach Einträgen kann man auf verschiedene Weise erledigen. Wenn Du nur die Einträge haben willst und es Dir egal ist, wo sie in der Liste stehen, geht das am Einfachsten so:
ausblenden C#-Quelltext
1:
var ergebnisse = neueListe.Where(s => s.ToLower().Cotnains("Suchwort".ToLower())).ToArray()					


Da Du im Titel etwas davon schreibst, dass Du die Einträge markieren willst, brauchst Du aber wahrscheinlich die Positionen der gefundenen Einträge in der Liste. Dann geht wahrscheinlich kein Weg dran vorbei, da durchzuiterieren:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
var resultIdx = new List<int>();

for(int i = 0; i < neueListe.Count; i++)
  if(neueListe[i].ToLower().Contains("Suchwort".ToLower()))
    resultIdx.Add(i);


In beiden Fällen muss "Suchwort" in dem String ernhalten sein, aber er muss nicht genau identisch zu "Suchwort" sein, durch ToLower wird auch Groß- und Kleinschreibung nicht beachtet. Wobei es natürlich sinnvoller ist, das Suchwort nur einmal "klein zu machen".

Viele Grüße
Christian

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Talemantros Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 444
Erhaltene Danke: 2

Win7 Proff 64bit
C# (VS2013)
BeitragVerfasst: Mi 05.03.14 23:32 
Hallo,
entschuldigt die späte Rückmeldung. Irgendwie ist zu viel los :-(
Ich werde das morgen mal testen und eine Rückmeldung geben.

Beim einfachen Überfliegen verstehe ich aber folgende Zeile nicht.

ausblenden C#-Quelltext
1:
var resultIdx = new List<int>();					


Bisher kenne ich nur Konstruktionen wie

ausblenden C#-Quelltext
1:
List<int> resultIdx = new List<int>();					


Kann mir das jemand erleäutern?

Vielen Dank

Gruß
Daniel
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mi 05.03.14 23:45 
var ist einfach ein Platzhalter für den tatsächlichen Typ. Da die rechte Seite einen eindeutigen Typen definiert kann man sich den sparen auf der linken Seite nochmal hinzuschreiben.
Details gibts in der Doku.
Talemantros Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 444
Erhaltene Danke: 2

Win7 Proff 64bit
C# (VS2013)
BeitragVerfasst: Sa 08.03.14 10:54 
Vielen Dank,
habe das eingebaut und etwas verändert und funktioniert für meine Zwecke sehr gut.

Vielen Dank

Schönes Wochenende

Gruß
Daniel