#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