ListBox - how to show full product name and bring another column of values

3

I have this ListBox .

Whenloadeditusesatxtfilethus:

CodetoloadListBox:

privatevoidfrmOrdemServico_Load(objectsender,EventArgse){string[]d=File.ReadAllLines(@"C:\Users\willian\Downloads\dbProdutos.txt");
        foreach (var line in d)
        {
            string[] produtos = line.Split(' ');
            lbProdutos.Items.Add(produtos[0]);
        }
    }

I have 2 problems:

  

1st The names of the products are not complete because where there is space is short: example: Liquid Soap, stays: Soap only. [resolved]

     

2nd I do not know how to bring the values of the products into another column within the ListBox, as I intend to use them. [resolved]

My file txt is in this form:

Disregard data only call structure

  

Note: I read a bit on the internet about the ListView but did not   I was able to implement it because I could not pass data on one side   for another etc. And bring the two columns at last ..

    
asked by anonymous 27.10.2017 / 15:06

3 answers

1

For the sake of knowledge, I was able to implement using ListBox also, this way:

private void frmOrdemServico_Load(object sender, EventArgs e)
        {


            string[] lineOfContents = File.ReadAllLines(@"C:\Users\willian\Downloads\dbClientes.txt");
            cbClientes.Items.Clear(); // limpar para não duplicar valores
            foreach (var line in lineOfContents)
            {
                string[] nomes = line.Split(',');
                cbClientes.Items.Add(nomes[0]);
            }

            string[] d = File.ReadAllLines(@"C:\Users\willian\Downloads\dbProdutos.txt");
            foreach (var line in d)
            {
                string[] produtos = line.Split(';');
                lbProdutos.Items.Add(produtos[0] + " R$" + Convert.ToDouble(produtos[1]));
            }
        }

Changed line: lbProdutos.Items.Add(produtos[0] + " R$" + Convert.ToDouble(produtos[1]));

In this way I was able to bring the other value that was in txt file .

    
27.10.2017 / 17:54
1

If you have the option to use ListView , then I'd better use it in that case.

The code below shows how you can move items from one listview to another.

I left the option MultiSelect = true to allow the movement of multiple items between ListViews.

void frmOrdemServico_Load(object sender, EventArgs e)
{
    lvwProdutos.Columns.Add("Produto",100,HorizontalAlignment.Left);
    lvwProdutos.Columns.Add("Valor",60,HorizontalAlignment.Right);
    lvwProdutos.View = View.Details;
    lvwProdutos.FullRowSelect = true;
    lvwProdutos.MultiSelect = true;

    lvwProdutosUsados.Columns.Add("Produto",100,HorizontalAlignment.Left);
    lvwProdutosUsados.Columns.Add("Valor",60,HorizontalAlignment.Right);
    lvwProdutosUsados.View = View.Details;
    lvwProdutosUsados.FullRowSelect = true;
    lvwProdutosUsados.MultiSelect = true;

    string[] d = File.ReadAllLines(@"C:\desenv\dbProdutos.txt");
    foreach (var line in d)
    {
        string[] produtos = line.Split('-');

        var item = new ListViewItem();
        item.Text = produtos[0];
        item.SubItems.Add(produtos[1]);

        lvwProdutos.Items.Add(item);
    }
}


void btnAdicionar_Click(object sender, EventArgs e)
{
    foreach (ListViewItem item in lvwProdutos.SelectedItems)
    {               
        lvwProdutos.Items.Remove(item);
        lvwProdutosUsados.Items.Add(item);
    }   
}


void btnRemover_Click(object sender, EventArgs e)
{
    foreach (ListViewItem item in lvwProdutosUsados.SelectedItems)
    {               
        lvwProdutosUsados.Items.Remove(item);
        lvwProdutos.Items.Add(item);
    }       
}       
    
27.10.2017 / 17:32
-1

Try to use the valueMember property of the listBox: link

    
27.10.2017 / 15:38