[C#] Text aus Combobox verwenden

Hawkings

Erfahrenes Mitglied
Sers @ all...

Ich habe folgendes Problem...
Wie man auf dem angehängten Bild sieht, habe ich eine ComboBox und eine checkedListBox, außerdem noch einen Button, der jedoch hier nur eine untergeordnete Rolle spielt.
Ich kann nicht den selektierten Text aus der Combobox auslesen lassen in eine Variable.
Den ausgelesenen Text stellt einen Überbegriff dar, der dann in der checkedListBox angezeigt wird.

Bsp.: In der ComboBox sind verschiedene Domänen zur Auswahl, in der Checklistbox soll dann die jeweils untergeordneten Clients angezeigt werden.

Ich habe Textdateien angelegt, die der Auflistung der ComboBox entsprechen.

Also für die Domäne "lala" (rein theoretisch :suspekt:) gibt es auch eine Textdatei mit den Clients mit Namen "lala.txt".
Wird jetzt lala in der ComboBox ausgewählt, so soll die textdatei lala.txt ausgelesen werden in die chechedlistbox...

Wie stelle ich das jetzt an?! Hier mal ein Ansatz...

Code:
       private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            string lLine;
            ComboBox cb1 = new ComboBox();
            if (cb1.SelectedValue != null)                    //Wenn ein Wert selektiert wurde in der ComboBox
            {
                string lText = comboBox1.SelectedValue.ToString();    //Kontrolle
                string lpath = @"C:\Domain\"+ lText+".txt";                 //Pfad auf txt setzen 
                StreamReader Reader = new StreamReader (lpath);     //Öffnen
                while (lLine = Reader.ReadLine() != null)                      //auslesevorgang
                     {
                     checkedListBox1.Items.Add(lLine);
                     checkedListBox1.Text = Line;
                     }
            }
            else
            {
                checkedListBox1.Text = "Keine Clients innerhalb der Domäne";
            }


Muss das in eine Click methode rein oder in eine MouseClick?!
Es muss ja einen Anstoß geben, dass es das im Code oben macht, bis jetzt hatte ich hierfür immer Buttons verwendet, wie kann ich das aber machen, dass er sobal eine Domäne ausgewählt wurde er die dazugehöirge Liste der Clients in die checkedListBox lädt?!

Grüße aus Bruchsal,

Hawkin
 

Anhänge

  • problem.bmp
    126,2 KB · Aufrufe: 662
Tach,
also mit SelectedIndexChanged hast du schon das richtige Event verwendet...
nur diese 2 Codezeilen kann ich nicht nachvollziehen
Code:
ComboBox cb1 = new ComboBox();
if (cb1.SelectedValue != null)

Du instanziierst dir eine neue ComboBox....
da kann ja gar nichts drinstehen...
also würde ich auch nicht auf deine neu isntanziierte ComboBox abfragen sondern auf dein Objekt in dem auch Werte stehen...
Code:
If(comboBox1.SelectedValue != null) {
.
.
.
}

mfg
 
Ich würde auch mal behaupten dass du deine comboBox1 ansprechen solltest! So wie ich das sehe läuft deine Anweisung immer in den else-Zweig, da ja gar nix ausgewählt werden kann!

Grüße aus Hambrücken :)
 
nach du e...stimmt...ja, das war bockmist :-D

Mein Code sieht mittlerweise folgendermaßen aus...


Code:
        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            checkedListBox1.Items.Clear();
            string lLine = "";
            if (comboBox1.SelectedValue != null)
            {
                string lText = comboBox1.SelectedValue.ToString();
                string lPath = "C:\Domains\" + lText + ".txt";
                textBox1.Text = lPath;
                StreamReader Reader = new StreamReader(lPath);
                while (Reader.ReadLine() != null)
                {
                    lLine = Reader.ReadLine();
                    checkedListBox1.Items.Add(lLine);
                    checkedListBox1.Text = lLine;
                }    
            }
            else
            {
                checkedListBox1.Items.Add("Pech");
            }

Das geht aber nicht, warum auch immer...
wenn ich das starte und eine domäne aussuche, dann macht er gar nix und springt gleich in pech...also schreibt in die checkedlistbox das _Item mit namen PECH rein...
Aber warum denn?! ich habe ja einen Wert selektiert, eigentlich sollte er doch dann die zugehörige txt datei auslesen und in die checkedlistbox reinschreiben, oder?!

Könnt ihr mir da weiterhelfen?!

Gruaz die:)

EDIT: habs hier auch nochmal fett markiert, ist noch eine knackstelle...zumindest glaube ich das.
kann ich den Pfad so mit übergeben per lPath im string oder muss ich das später definieren?! Lösungen?!
wenn ich das @ davor wegmache, dann stimmt die zeile nicht mehr, also muss er entweeder dran bleiben oder ich pfriemel da was mit variablen hin....oder?!
 
Zuletzt bearbeitet:
Mmh müßte so klappen! Er geht ja in die Methode rein ALSO merkt der schon dass was ausgewählt wurde!

Wie füllst du die ComboBox? Bzw wo füllst du sie?

EDIT: OH das hab ich gar nicht gesehen! NE also das @ vor dem Pfad muß da sein! Egal wie! aber das Problem liegt nicht daran sondern offensichtlich merkt deine combobox nicht dass sie ausgewählt wurde! Oder (was ich denke) sie kann es sich nicht merken, weil sie überschrieben wird! Daher wollte ich wissen wann du diese ComboBox füllst!
 
Zuletzt bearbeitet:
Hallo,
ich denk ich hab deinen fehler...
schreib mal
Code:
if (comboBox1.SelectedItem != null) {
string lText = comboBox1.SelectedItem.ToString();
.
.
.
}

dann sollte es gehen...



mfg
 
Zuletzt bearbeitet:
Habs gefunden....

Es war einmal das und dann noch das hier...

Code:
 while ((lLine = Reader.ReadLine()) != null)

So ist es jetzt richtig :)

Ich hätte aber auch noch eine andere Frage, und zwar, ist es möglich, aus einem Verzeichnis die Dateien in ein Array auslesen zu lassen?!

Bsp.: C:\Domains\

Unter diesem Überverzeichnis liegen ja verschiedene txt Dateien, die die jeweiligen Clients beinhalten

Ich möchte den Namen der einzelnen Dateien auslesen, der Pfad wird fest angegeben, zumindest vorerst, also bei der lala.txt soll "lala" in das Array reingeschrieben werden,
wie ist das möglich?!

Danke schonmal für eure Hilfe :)
 
Ich würde das bevorzugen:
Code:
DirectoryInfo di = new DirectoryInfo(@"C:\Domains\");
FileInfo[] files in di.GetFiles("*.txt");
 
ja, habs jetzt ähnlich gemacht...

Code:
            string lPath = @"C:\Domains\";
            DirectoryInfo di = new DirectoryInfo(lPath);
            FileInfo[] fi = di.GetFiles();
            foreach (FileInfo fiTemp in fi)
            {
                string lresult = Path.ChangeExtension(fiTemp.Name, "");
                comboBox1.Items.Add(lresult);  
            }

aber ;-) gleich das nächste...tut mir sry =)
und zwar habe ich jetzt die dateien aus dem unterordner rausgelesen und in die chechekdlistbox1 eingelesen, jedoch hängt an diesen namen noch ein hartknäckiger ".", der nicht weichen will...
Wie kriege ich denn den Dot weg?!
 

Neue Beiträge

Zurück