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