我正在尝试在表单之间传递方法值。结果,我已经制作了我想要传递数据的方法。由于我使用非静态文本框来收集用户输入,我还使用公共属性方法来解析用户的输入,将其值存储在公共类级静态变量中,并将值返回给静态调用变量的方法。
public static int laborHours;
public int lHoursB
{
get
{
return laborHours;
}
set
{
laborHours = int.Parse(lHours.Text);
}
}
private static decimal laborMethod(decimal laborTotal)
{
const decimal laborCharge = 50M;
decimal labor = 0;
labor = laborCharge * laborHours;
return labor;
}
public static decimal amountCharged;
public decimal amount
{
get
{
return amountCharged;
}
set
{
amountCharged = int.Parse(amtBox.Text);
}
}
public static int numberOfParts;
public int partsNumber
{
get
{
return numberOfParts;
}
set
{
numberOfParts = int.Parse(partsBox.Text);
}
}
private static decimal subtotalMethod(decimal subTotal)
{
decimal subtotal = 0;
subtotal = amountCharged * numberOfParts;
return subtotal;
}
private static decimal subtotal2Method(decimal subtotalTwo)
{
decimal labor = 0;
decimal subtotal = 0;
labor = laborMethod(labor);
subtotal = subtotalMethod(subtotal);
subtotalTwo = subtotal + labor;
return subtotalTwo;
}
private static decimal taxMethod(decimal salesTax)
{
const decimal tax = .08M;
decimal sTax = 0;
decimal sub = 0;
sub = subtotalMethod(sub);
sTax = sub * tax;
return sTax;
}
编译器将所有内容都检查为干净的编译,但这里有一个逻辑错误,我似乎无法找到。当我用程序运行一个简单的测试时,每个文本框都返回一个“0”。
请帮帮忙?
答案 0 :(得分:1)
与正常写作方式相比,您的属性又回到了前面。我建议你这样写:
public int lHoursB
{
get
{
int result = 0;
int.TryParse(lHours.Text, out result);
return result;
}
set
{
lHours.Text = value.ToString();
}
}
然后你可以这样做:
lHoursB = 10;
将lHours文本框设置为“10”。我使用过TryParse而不是Parse,因为如果它不能解析字符串,后者将抛出FormatException;你可能更喜欢有一个例外,在这种情况下使用Parse。你也应该使用Decimal.Parse / TryParse而不是Int32.Parse为金额,这是一个小数而不是int。最后,如果要格式化特定区域性的int,可以在int.ToString调用中指定区域性(请参阅Int32.ToString())。