C # Создать окно сообщения о счете с отображением отмеченных элементов

#c# #checkbox #messagebox

#c# #флажок #messagebox

Вопрос:

Есть форма с тремя флажками и кнопкой. Предполагается, что при нажатии на кнопку появится окно сообщения, в котором будут отображаться все товары, которые были отмечены в форме, с указанием цены до уплаты налогов и общей суммы. Цена до налогообложения и общая сумма учтены, но как мне отобразить то, что было отмечено пользователем в этой форме, в окне сообщения, которое будет использоваться в качестве счета.

 if (checkCheeseSnackBread.Checked == true)
        {
            price  = 10;
            items  = "Cheese Snack Bread - $10";
        }
        else
        {
            price -= 10;
        }
  

Просто нужно некоторое руководство.

Комментарии:

1. Что вы подразумеваете под «тем, что было отмечено пользователем в этой форме в окне сообщения, которое будет использоваться в качестве счета».

2. Добавляйте "rn" к каждой из строк при добавлении их в items строку. Это приведет к появлению новой строки в окне сообщения.

3. Три флажка и кнопка. Вы ничего не устанавливаете и нажимаете кнопку, появится окно сообщения с сообщением, что ни один элемент не был отмечен. Например, если вы установите флажок 1-й и 3-й элементы, то после нажатия кнопки появится окно сообщения с сообщением, что пользователь выбрал 1-й и 3-й элементы.

Ответ №1:

Сначала я должен сказать, что написанный вами код, похоже, содержит логическую ошибку. Если флажок не установлен, вам ничего не следует делать. В вашем коде вы вычитаете цену товара из общей цены. Таким образом, вы предоставляете скидку в размере 10. Если они это не покупают, не добавляйте это. Вот и все.

Итак, теперь вы знаете, что они купили, вы можете использовать StringBuilder для заполнения сообщения. Быстро и грязно:

 StringBuilder builder = new StringBuilder();
builder.AppendLine("Ticket")
builder.AppendLine();

if (checkCheeseSnackBread.Checked) // == true is not needed
  {             
      price  = 10;             
      items  = "Cheese Snack Bread - $10";     
      builder.AppendLine(Cheese Snack Bread - $10);    
  }        

// Do the same for other checkboxes
// Add the totals    
Messagebox.Show(builder.ToString());
  

Есть другой способ: перебрать элементы управления в форме, если это флажок ==> добавить текст в StringBuilder. Таким образом, не имеет значения, сколько там флажков. Вам просто нужно убедиться, что свойство text используется для печати в билете (messagebox).

Комментарии:

1. Но поскольку заполнение элемента происходит во время события CheckedChanged, если я продолжу проверять и отменять один из элементов и нажимать кнопку, в окне сообщений будет отображаться один и тот же элемент столько раз, сколько я проверял его снова и снова.

2. В вашем случае вам просто нужно поместить этот код в событие Button_Click и посмотреть, установлены ли флажки. Таким образом, вам нужно просматривать только один раз, а не каждый раз, когда кто-то меняет флажок.

3. Ого, я понял, что допустил логическую ошибку. Черт. Спасибо.

Ответ №2:

Если вы просто хотите отобразить сгенерированную вами строку.

Проверьте это:

http://msdn.microsoft.com/en-us/library/system.windows.forms.messagebox.aspx