Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从单独的事件处理程序访问变量_C#_Visual Studio 2010_Scope - Fatal编程技术网

C# 如何从单独的事件处理程序访问变量

C# 如何从单独的事件处理程序访问变量,c#,visual-studio-2010,scope,C#,Visual Studio 2010,Scope,我一直在为学校的一个实验室工作,一切都进行得很顺利,直到我遇到了一个障碍。我必须编写一个程序,要求用户输入销售人员的姓名首字母(C、D或M)以及他们的销售价格。我还必须记录每个销售人员赚取的佣金,直到我成功或退出该计划为止 当我点击calculate commission时,它当然应该计算佣金(它是这样做的),但是因为变量是方法级的(或一些较低的访问级别),而且我似乎无法返回它们,所以我无法向第二个方法传递它从“…C”变量中需要的信息 namespace SunshineHotTubs {

我一直在为学校的一个实验室工作,一切都进行得很顺利,直到我遇到了一个障碍。我必须编写一个程序,要求用户输入销售人员的姓名首字母(C、D或M)以及他们的销售价格。我还必须记录每个销售人员赚取的佣金,直到我成功或退出该计划为止

当我点击calculate commission时,它当然应该计算佣金(它是这样做的),但是因为变量是方法级的(或一些较低的访问级别),而且我似乎无法返回它们,所以我无法向第二个方法传递它从“…C”变量中需要的信息

namespace SunshineHotTubs
{
    public partial class FrmSalesCommission : Form
    {
        double cliffS = 0;
        double dinoS = 0;
        double marshaS = 0;

        public FrmSalesCommission()
        {
            InitializeComponent();
        }

        public void btnCalcCommission_Click(object sender, EventArgs e)
        {
            string salesperson = txtInitial.Text;
            double sale = Convert.ToDouble(txtSaleTotal.Text);

            switch(salesperson)
            {
                case "c":
                case "C":
                    cliffS += sale;
                    double cliffC = cliffS * .10;
                    lblCommission.Text = Convert.ToString(cliffC);
                    break;
                case "d":
                case "D":
                    dinoS += sale;
                    double dinoC = dinoS * .10;
                    lblCommission.Text = Convert.ToString(dinoC);
                    break;
                case "m":
                case "M":
                    marshaS += sale;
                    double marshaC = marshaS * .10;
                    lblCommission.Text = Convert.ToString(marshaC);
                    break;
            }
        }

        private void btnDisplayCommission_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Cliff's Commission: " + cliffC + "\n"
                            + "Dino's Commission: " , "Total Commissions");
        }
    }
}


对于我来说,最简单的获取BTNDisplay Commission\u Click事件所需信息的方法是什么?

您已经在类级别声明了变量:

double cliffC = 0;
double dinoC = 0;
double marshaC = 0;
只要替换这个:

double cliffC = cliffS * .10;
double dinoC = dinoS * .10;
double marshaC = marshaS * .10;
关于这一点:

cliffC = cliffS * .10;
dinoC = dinoS * .10;
marshaC = marshaS * .10;
更新

此外,您还可以使用BTNDisplay方法计算值:

MessageBox.Show("Cliff's Commission: " + cliffS * .10 + "\n"
                + "Dino's Commission: " , "Total Commissions");

btncalccission\u点击
,或者我遗漏了什么?你需要哪些信息不一定是一个字段?正如@digEmAll所说,通过声明与表单级变量同名的变量,你似乎在强制使用局部作用域。只要参考它们而不重新声明(或者我的偏好,使用这个),你应该会没事的。我想我没有说清楚。问题是我需要的信息在BTNCALCU点击的[name]C中。但是,这些变量只能在BTNCALCU单击中访问。当我尝试在事件外部声明变量时,它告诉我“字段初始值设定项无法访问非静态字段、方法或属性”,我无法运行它。演示如何尝试声明字段?天哪,我不敢相信我完全忽略了这一点。因为我在上传的时候正在修补它,我把那些C变量放在那里,没有删除重新声明的变量,我错过了一个明显的答案。很抱歉,这个问题太愚蠢了>。