C# Textfile durch Listbox bearbeiten

Driftdriver

Grünschnabel
Zuerst mal Hallo ich bin neu hier und Anfänger...:rolleyes:

Jedenfalls muss ich ein kleines Projekt für die Uni machen und sitz jetzt schon tagelang am selben Problem:
Ich speichere mehrere Einträge in ein Textfile, jetzt möchte aber eben genau dieses durch eine listbox bearbeiten, also eigentlich nur Einträge löschen!
Hinzufügen hab ich schon geschafft,ist kein Problem, aber wie geht das löschen

Hinzufügen tu ichs so:
Code:
private void Speichern_Click(object sender, EventArgs e)
        {
            int test = 0;
            kennzeichen1 = kennzeichen;
            comboBox1.Items.Add(kennzeichen);
            if (test== 0)
            { 
                comboBox1.SelectedItem = kennzeichen1;
            }//end if       
          StreamWriter sw;
          sw = File.AppendText(@"\My Documents\Personal\test.txt");
          sw.WriteLine(kennzeichen);
          sw.Close();
          SMS3 = String.Concat(SMS2, " ", comboBox1.Text);
          smsFeld.Text = SMS3;
        }
Auslesen momentan so:
Code:
 private void button1_Click(object sender, EventArgs e)
        {
            StreamReader reader = new StreamReader(@"\My Documents\Personal\test.txt", true);
            while (!reader.EndOfStream)
                listBox1.Items.Add(reader.ReadLine());
            reader.Close(); 
        }

Ich habe die Suchfunktion und google mehrere Tage ohne Erflog gequält... Bitte helft mir
Danke schonmal
 

Driftdriver

Grünschnabel
Hallo

Erstmal vielen vielen Dank für Deine rasche Antwort, muss sagen ich hab schon unzählige Beiträge von Dir gelesen die mir bis hierhin sehr geholfen haben!!
Hab Deinen Rat auch gleich probiert indem:
Code:
private void button2_Click(object sender, EventArgs e)
        {
            for (int i = listBox1.SelectedItems.Count - 1; i >= 0; i--)
                listBox1.Items.RemoveAt(listBox1.SelectedIndices[i]);  
        }
Jetzt bekomme ich die Meldung:
'System.Windows.Forms.Listbox' does not contain a definition of 'Selected Items'

Nocheinmal helfen BITTE
DANKE:)
 

Nico Graichen

Erfahrenes Mitglied
Nabend und willkommen im Forum

hm, seltsam, ListBox hat eigentlich das Property SelectedItems :confused:
Aber als Alternative kannst du auch das Property SelectedIndices nutzen.
 

Norbert Eder

Erfahrenes Mitglied
Die ListBox hat die Eigenschaft SelectedItem aber keine SelectedItems :)

Ersetze in deinem Code SelectedItems durch SelectedIndices. Dann solltes es funktionieren.
 

Driftdriver

Grünschnabel
Hmm... Versteh ich auch nicht!
Jedenfalls vielen Dank dass ihr euch so bemüht

Habe es aber zum Glück jetzt doch noch irgendwie geschafft:
Code:
 private void button2_Click(object sender, EventArgs e)
        {
            if (loeschen == true)
            {
                int count = 0;//var für anzahl der Items in der Listbox

                StreamWriter sw = File.CreateText(@"\Temp\test.txt");

                count=listBox1.Items.Count;
                for (int i = 0; i < count; i++)
                {
                    listBox1.SelectedIndex = i;
                    sw.WriteLine(listBox1.Text);
                }//end for
                sw.Close();
            }//end if

            Form1 next = new Form1();
            next.ShowDialog();
        }

        private void entfernen_Click(object sender, EventArgs e)
        {
           loeschen = true;
           listBox1.Items.Remove(x);

          }

Habe aber jetzt noch ein kleines Problem!!
Die Eingabe ins Textfeld soll keine Sonderzeichen und nur 5 Zeichen zulassen, könntet ihr mir bitte da noch einen Tipp geben.
Das hab ich schon:
Code:
            string input = this.textBox1.Text;
if(input != "")
{
	double number = 0;
	try
	{
		number = Convert.ToDouble(input);
		
	}
	catch
	{
		MessageBox.Show("Eingabe ist ungültig");
		return;
	}

Aber er blockt mir alle Buchstaben und wenn ich mehr als eine Zahl eingebe dann schreit er auch...
Hoffe das ist wenigstens der richtige Ansatz?!
 

Norbert Eder

Erfahrenes Mitglied
Zur Vereinfachung könntest du eine MaskedTextBox oder gar ein NumericUpDown vernwenden, da bei dir ja ohnehin nur Zahlen eingegeben werden können.