【问题标题】:Visual Studio Win FormVisual Studio 赢取表格
【发布时间】:2018-04-12 05:34:34
【问题描述】:

我无法在 Visual Studio 上的 win 表单中找出这些错误。

程序运行,尽管它没有正确计算附加组件。即使检查了所有 3 个附加组件,它也不会计算超过 75 美分。 数组名称也不会改变,即使它没有显示任何与数组相关的错误,但它可能与显示为错误的事件处理程序有很大关系。

{

    private object groupSalad;
    private object groupPizza;
    private object groupHamburger;
    private int addon3;
    private int addon2;
    private int addon1;

    public Form1()
    {
        //created event handlers for change in radiobox
        InitializeComponent();
        hamburger.CheckedChanged += new System.EventHandler(groupHamburger.Checked);
        salad.CheckedChanged += new System.EventHandler(groupSalad.Checked);
        pizza.CheckedChanged += new System.EventHandler(groupPizza.Checked);
        // ERROR ON groupSalad/Pizza/Hambuger.CHECKED' and
        // group Pizza. object does not contain a definition for 'checked' 
        // and no extension method for 'checked' accepting a first argiument 

    }

    private void btnPlaceOrder_Click(object sender, EventArgs e)
    {

        //declared variables to hold
        decimal tax = .09m;
        decimal food = 0;
        decimal addOn;
        //food options. 3 radio buttons 
        decimal burger = 9.95m;
        decimal salad = 7.95m;
        decimal pizza = 8.95m;
        //variables to hold currency ammounts
        decimal subtotal = 0;
        decimal taxAmmount = 0;
        decimal total = 0;


        //depending on radio button options, addons will change text with array

        string[] addOnPizza = new string[2];
        //array type 1. not prefered
        addOnPizza[0] = "Suasage";
        addOnPizza[1] = "Olives";
        //salad add-ons
        string[] addOnSalad = new string[3];
        addOnSalad[0] = "Bacon Bits";
        addOnSalad[1] = "Bread Sticks";
        addOnSalad[2] = "Croutons";

        //array type. prefered
        string[] addOnBurger = { "Cheese", "Ketchup", "Fries" };

        //RadioButtons
        if (this.hamburger.Checked)
        {
            food = burger;
            addOn = .75m;
            chkAddOn1.Text = addOnBurger[0];
            chkAddOn2.Text = addOnBurger[1];
            chkAddOn3.Text = addOnSalad[2];
        }
        else if (this.salad.Checked)
        {
            food = salad;
            addOn = 45m;
            chkAddOn1.Text = addOnSalad[0];
            chkAddOn2.Text = addOnSalad[1];
            chkAddOn3.Text = addOnSalad[2];
        }
        else if (this.pizza.Checked)
        {
            addOn = .65m;
            food = pizza;
            chkAddOn1.Text = addOnPizza[0];
            chkAddOn2.Text = addOnPizza[1];
            chkAddOn3.Text = null;
        }


        decimal addOnTotal;
        if (chkAddOn1.Checked)
        {
            addOnTotal =+ addon1;
            if (chkAddOn2.Checked)
                addOnTotal =+ addon2;
            if (chkAddOn3.Checked) 
                addOnTotal =+ addon3;
        }

//Use of unassigned variable for addOnTotal
            subtotal = food + addOnTotal;

            taxAmmount = food * tax;
            total = taxAmmount + food;

            txtSubtotal.Text = subtotal.ToString("c");
            txtTax.Text = tax.ToString("c");
            txtTotal.Text = total.ToString("c");



        }
    }

}

【问题讨论】:

  • 这对你有用吗?告诉我
  • btn_PlaceOrder 替换groupHamburger 确实修复了错误,尽管它仍然不会更改每次点击的文本,decimal addOnTotal=0; 也不起作用。
  • 它应该可以工作,根据您提供的代码

标签: c# arrays visual-studio event-handling


【解决方案1】:

这条线有问题

 hamburger.CheckedChanged += new System.EventHandler(groupHamburger.Checked);

应该是

hamburger.CheckedChanged += new System.EventHandler(btnPlaceOrder_Click);

因为CheckedChanged 的事件处理程序具有签名,该签名期望处理函数具有sender & EvenArgs 作为参数button1_Click(object sender, EventArgs e)


第二个错误

//Use of unassigned variable for addOnTotal
        subtotal = food + addOnTotal;

您必须将 addOnTotal 变量初始化为默认值,因为它在函数中使用,根据指南,方法的所有局部变量都应该被初始化,所以请按照以下方式进行操作

decimal addOnTotal=0; 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-03
    • 1970-01-01
    • 1970-01-01
    • 2013-03-30
    • 1970-01-01
    • 1970-01-01
    • 2011-02-07
    相关资源
    最近更新 更多