Przenoszenie tekstu z textbox do listy

0

Witam. Chciałbym stworzyć pustą listę, która będzie uzupełniana o to co zostanie wpisane przez użytkownika a później wyświetlona ale zupełnie nie wiem jak powinienem się za to zabrać, kiedy korzystam z funkcji list.add() program zwraca jedynie "System.Collections.Generic.List`1[System.String]" w miejscu, w którym powinno wyświetlać się coś co powinien wpisać użytkownik.

1

Niech zgadnę, zrobiłeś lista.ToString() albo Console.WriteLine(lista)? Aby wyciągnąć elementy z listy potrzebujesz pętli (for lub foreach) po tych elementach.

for(int i = 0; i < lista.Count; i++)
{
   string element = lista[i];
   Console.WriteLine(element); 
}

// LUB

foreach(string element in lista)
{
    Console.WriteLine(element);
}

#EDIT
Samym string nie jesteś w stanie tego ogarnać. Zrób klasę Produkt i ten element wrzucaj do listy.

public class Produkt
{
    public string Nazwa {get;set;}
    public int Ilosc {get;set;}
}

I dalej w programie, w odpowiednim miejscu robisz:

List<Produkt> lista = new List<Produkt>();

// Dodawanie 

Produkt produkt = new Produkt();
produkt.Nazwa = "Mleko";
produkt.Ilosc = 2;

if(lista.Any(x=>x.Nazwa == produkt.Nazwa))
{
   Produkt elementListy = lista.FirstOrDefault(x=>x.Nazwa == produkt.Nazwa);
   elementListy.Ilosc += produkt.Ilosc;
}
else
{
   lista.Add(produkt);
}

Ciężko cokolwiek z sensem napisać skoro nie wiem co masz i jak masz. Ja bym to zrobił tak. Na tym poziomie ci to wystarczy. Przyzwyczajaj się do klas.

0

To kod, który odpowiada za pobieranie informacji od użytkownika o nazwie i ilości produktu, które chciałby dodać do swojej listy zakupów. Chciałbym żeby program sprawdzał czy dany element znajduje się już w polu richTextBox i jeśli tak, jedynie zwiększył jego ilość zamiast po raz kolejny przepisywać, podobno w tym celu powinienem stworzyć listę. Tak więc moim pytaniem jest jak stworzyć pustą listę do której dopisywane byłyby nazwy podane przez użytkownika

	void Button1Click(object sender, EventArgs e)
	{
		string new_product;
		decimal quantity;
		
		// Nazwa produktu wpisana przez użytkownika			
		new_product = textBox1.Text;

		//Ilość sztuk danego produktu które użytkownik chce wprowadzić do listy			
		quantity = numericUpDown1.Value;
		
		//if zapobiegający dodaniu spacji jako produktu do listy
		if(string.IsNullOrWhiteSpace(textBox1.Text))
		{
			MessageBox.Show("Podaj nazwę produktu.", "Błąd", MessageBoxButtons.OK,MessageBoxIcon.Information);
		}
		
		//if zapobiegający dodaniu do listy produktu w ilości 0szt
		else if(quantity <= 0)
		{
			MessageBox.Show("Podaj prawidłową ilość produktu: " + new_product + ".", "Błąd", MessageBoxButtons.OK,MessageBoxIcon.Information);
			
		} 
		
		//Dodanie do listy produktu wpisanego przez użytkownika, w podanego przez niego liczbie.
		else
		{	
			//nadanie numeru produktowi na liście
			add_click++;
			
			richTextBox1.AppendText(add_click.ToString() + "." + new_product + " - " + Convert.ToString(quantity) + "." + "\n");
		}
		
		//wyczyszczenie pola do wprowadzania produktu oraz jego ilości
		textBox1.Clear();
		numericUpDown1.Value = 0;
	}
1

Po pierwsze, klasa. Zawsze. Jeśli chcesz mieć liczby niecałkowite to zmieniasz Ilosc z int na decimal

public class Produkt
{
    public string Nazwa {get;set;}
    public decimal Ilosc {get;set;}
}

A "najciekawsze" jest add_click++;. Skąd wy młodziaki bierzecie takie cuda?

Nie używa się RichTextBox do wyświetlania listy. Użyj do tego celu DataGridView i listę ustaw jako DataSource

    public partial class Form1 : Form
    {
        BindingList<Produkt> listaZakupow = new BindingList<Produkt>();

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            dataGridView1.DataSource = listaZakupow;
        }

        void Button1Click(object sender, EventArgs e)
        {
            if (!string.IsNullOrEmpty(textBox1.Text) || !string.IsNullOrWhiteSpace(textBox1.Text))
            {
                if (numericUpDown1.Value > 0)
                {
                    Produkt produkt = new Produkt();
                    produkt.Nazwa = textBox1.Text;
                    produkt.Ilosc = numericUpDown1.Value;
                    textBox1.Clear();
                    numericUpDown1.Value = 0;
                    listaZakupow.Add(produkt);
                }
                else
                {
                    MessageBox.Show("Podaj prawidłową ilość produktu: " + new_product + ".", "Błąd", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            else
            {
                MessageBox.Show("Podaj nazwę produktu.", "Błąd", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }

    }

1 użytkowników online, w tym zalogowanych: 0, gości: 1