C# Извлечь указанную c часть из списка и выполнить с ней дальнейшие операции - PullRequest
1 голос
/ 09 июля 2020

Order item переместит данные из list box items в list box order, а количество каждого заказанного элемента будет указано в текстовом поле. Если qty для гамбургера равно 2, чем в list box order, он сохраняется как.

Burger#2#100

я могу передать выбранный элемент, но как извлечь это определенное c число, а затем умножить его ... запутанный здесь ничего жестко не запрограммировано, и в основном мне нужно написать код для кнопки, которая умножит количество на количество, представленное в списке, я пробовал следующее:

 private void btnorder_Click(object sender, EventArgs e)
        {
            //int index = listboxitem.SelectedIndex;

            string itemadd = listboxitem.SelectedItem.ToString().Replace(" ", "#");
            listboxorder.Items.Add(itemadd);

            string item = listboxitem.SelectedItem.ToString();
          //  string[] text = listboxitem.Items.Replace(" ","#");
           
        }

Ответы [ 2 ]

1 голос
/ 09 июля 2020

Вы захотите использовать String.Split () на вводе, чтобы получить значения, разделенные пробелами, в массив строк. Впоследствии вам нужно будет преобразовать как стоимость, так и количество в целые числа с помощью int.TryParse () , чтобы вы могли выполнять с ними математические вычисления. Затем вы замените стоимость в массиве строк вычисленным итогом и снова поместите массив строк вместе с String.Join () , используя «#» в качестве разделителя.

Может показаться что-то вроде:

private void btnorder_Click(object sender, EventArgs e)
{
    if (listboxitem.SelectedIndex == -1)
        return; // nothing was selected

    string[] values = listboxitem.SelectedItem.ToString().Split(' ');
    if (values.Length == 3)
    {
        int itemCost, quantity;
        if (int.TryParse(values[2], out itemCost) && int.TryParse(textboxquantity.Text, out quantity))
        {
            if (itemCost >=0 && quantity > 0)
            {
                int totalCost = itemCost * quantity;
                values[2] = totalCost.ToString();
                string order = String.Join("#", values);
                listboxorder.Items.Add(order);
                return;
            }                    
        }
    }

    // something went wrong
    // either the item was formatted incorrectly
    // or the item cost or quantity was not a valid integer
    MessageBox.Show("Error Adding Item");
}
1 голос
/ 09 июля 2020

Шаг 1. Создайте класс или структуру MenuItem со следующими свойствами:

 String Name;  //Pizza  
 int Price; // 1200  
 public override String ToString()  
 { return Name + " " + "Rs " + Price; }

В зависимости от того, как вы это делаете, вы можете добавить поле идентификатора.

Создайте и добавьте эти элементы в список с помощью

См.: Добавление объектов в список (StackOverflow)

Шаг 2. Создайте класс OrderItem,

 MenuItem item;
 int quantity;
 public OrderItem(MenuItem menuitem, int quantity) { //errorcheck and populate fields}
 public override String ToString()
 {  return item.Name + "#" + quantity + "#" + item.Price * quantity;}

Шаг 3: Создайте обработчик кликов по порядку

private void btnorder_Click(object sender, EventArgs e)  
{  
     MenuItem itemadd = (MenuItem)listboxitem.SelectedItem;  
     int quant = Convert.ToInt32(textboxQuantity.Text); // needs validation and exception handling  
     OrderItem oitem = new OrderItem(itemAdd, quant);      
     listboxorder.Items.Add(itemadd);  
}

Это первый проход, посвященный проблеме, но, поскольку я понятия не имею, откуда берутся данные, я сохраняю это красивым basi c.

Вероятно, вы захотите изменить текстовое поле количества на раскрывающийся список или другой элемент управления, который ограничивает ввод целыми числами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...