这周我们在做C#。这是午餐订单任务,我的附加组件菜单的groupBox直到我选中另一个主菜时才会填充。附加组件都是groupBox中的复选框。
我想我可以通过设置第一道主菜(汉堡包)为默认选中来克服这个问题。没有解决这个问题,所以我想也许我应该让一个附加菜单复选框为默认选中...这也没有改善任何东西。这是我运行应用程序时的样子:
LunchOrderLaunch No add-ons
而当我检查另一道主菜选项时:
LunchOrderMainCourseChange Add-ons show
下面是代码(是的,事情有点乱,因为我是新手,正在尝试解决一些问题。事先向您道歉:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace LunchAppLAB1_V2
{
public partial class frmLunchOrder : Form
{
// Global declaration
decimal Subtotal;
decimal Tax = 0.05m;
decimal OrderTotal;
public frmLunchOrder()
{
InitializeComponent();
}
private void grbxAddOns_CheckChanged(object sender, EventArgs e)
{
}
private void btnExit_Click(object sender, EventArgs e)
{
string message = "Hey! Thanks for dining with us today!\n Will you be coming
back?";
DialogResult button =
MessageBox.Show(message, "Dear Customer",
MessageBoxButtons.YesNo,
MessageBoxIcon.Information);
if (button == DialogResult.No)
{
this.Close();
}
if (button == DialogResult.Yes)
{
MessageBox.Show("Hey! Thanks dude! Hope to see you soon!", "Greeting
Message");
this.Close();
}
}
private void btnPlaceOrder_Click(object sender, EventArgs e)
{
decimal add = 0m;
if (chkbx1.Checked)
{
add++;
}
if (chkbx2.Checked)
{
add++;
}
if (chkbx3.Checked)
{
add++;
}
if (rdoHamburger.Checked)
{
decimal Hamburger = Convert.ToDecimal(rdoHamburger.Checked);
Hamburger = 6.95m;
Subtotal = Hamburger + (add * .75m);
Tax = Subtotal * 0.05m;
OrderTotal = Tax + Subtotal;
txtSubtotal.Text = Subtotal.ToString("c");
txtTax.Text = Tax.ToString("c");
txtOrderTotal.Text = OrderTotal.ToString("c");
}
else if (rdoPizza.Checked)
{
decimal Pizza = Convert.ToDecimal(rdoPizza.Checked);
Pizza = 5.95m;
Subtotal = Pizza + (add * .50m);
Tax = Subtotal * 0.05m;
OrderTotal = Tax + Subtotal;
txtSubtotal.Text = Subtotal.ToString("c");
txtTax.Text = Tax.ToString("c");
txtOrderTotal.Text = OrderTotal.ToString("c");
}
else if (rdoSalad.Checked)
{
decimal Salad = Convert.ToDecimal(rdoSalad.Checked);
Salad = 4.95m;
Subtotal = Salad + (add * .25m);
Tax = Subtotal * 0.05m;
OrderTotal = Tax + Subtotal;
txtSubtotal.Text = Subtotal.ToString("c");
txtTax.Text = Tax.ToString("c");
txtOrderTotal.Text = OrderTotal.ToString("c");
}
}
private void rdoHamburger_CheckedChanged(object sender, EventArgs e)
{
grbxAddOns.Text = "Add-on items($.75/each)";
chkbx1.Text = "Lettuce, Tomato, and Onions";
chkbx2.Text = "Ketchup, Mustard, and Mayonnaise";
chkbx3.Text = "French Fries";
}
private void rdoPizza_CheckedChanged(object sender, EventArgs e)
{
grbxAddOns.Text = "Add-on items($.50/each)";
chkbx1.Text = "Pepperoni";
chkbx2.Text = "Sausage";
chkbx3.Text = "Olives";
}
private void rdoSalad_CheckedChanged(object sender, EventArgs e)
{
grbxAddOns.Text = "Add-on items($.25/each)";
chkbx1.Text = "Croutons";
chkbx2.Text = "Bacon Bits";
chkbx3.Text = "Bread Sticks";
}
private void btnReset_Click(object sender, EventArgs e)
{
RecursiveClearTextBoxes(this.Controls);
}
private void RecursiveClearTextBoxes(Control.ControlCollection cc)
{
foreach (Control ctrl in cc)
{
TextBox tb = ctrl as TextBox;
if (tb != null)
tb.Clear();
else
RecursiveClearTextBoxes(ctrl.Controls);
}
}
}
}
主菜选项的所有单选按钮都用CheckedChanged指令编码,所以我知道只有在按钮被物理选中后,它们才会触发(和选中的按钮变化)所以我想知道如何做到这一点,并有加载项填充开始。我一直试图找到一个解决方案,因为昨天,现在我几乎没有时间了。我是一个C#新手,明天要交作业...
1条答案
按热度按时间kkih6yb81#
在构造函数中,在 * InitializeComponent()之后 * 添加此行;
您的问题是,即使您将一个复选框设置为默认单击,它仍然没有触发设置复选框文本的事件。
因此,您可以在构造函数中手动调用此事件。