我想做的事情很简单(我当然无法解决)。我正在使用Winform App格式的库存系统制作一个样本商店,如果在客户端单击“下订单”按钮,它将从库存中扣除;扣除的金额取决于所订购物品的数量。无论如何,使用此代码
private void button7_Click(object sender, EventArgs e)
button7.Enabled = true;
//Read in value
int qty = Convert.ToInt32(nudQuantity.Value);
if ((rdoSmallCup.Checked & rdoStraw.Checked) == true) {
//Removing four from inventory for strawberry after an order is made
InvStrawberry = InvStrawberry - (4 * qty);
if (InvStrawberry <= 0) {
button7.Enabled = false;
} else {
button7.Enabled = true;
}
label17.Text = Convert.ToString(InvStrawberry);
我看到,一旦草莓库存下降到零以上(它实际上是一个负值,我不希望看到,但又是另一个问题),它的编译就不会出错,但是有一个下单按钮(“目标是按钮7“)变灰且无法使用,但这是目标,但是一旦再次添加广告资源,该按钮仍然无法使用。有人可以解释一下如何重新启用此按钮(即使我说的是“ else”状态)?
答案 0 :(得分:0)
Ron和Heretic的评论是正确的。一旦“禁用”按钮,您将无法访问Button7单击事件处理程序中的代码。再次启用它的唯一方法是从外部逻辑中说,例如,在将其他项目添加到清单中之后,可以立即启用该按钮。 您也可以简化一下:
private void button7_Click(object sender, EventArgs e)
//Read in value
int qty = Convert.ToInt32(nudQuantity.Value);
if ((rdoSmallCup.Checked & rdoStraw.Checked) == true) {
//Removing four from inventory for strawberry after an order is made
InvStrawberry = InvStrawberry - (4 * qty);
if (InvStrawberry <= 0)
button7.Enabled = false;
label17.Text = Convert.ToString(InvStrawberry);
...
答案 1 :(得分:0)
此代码将允许无数个减法。因此,您将需要一个控件,当您降至零以下时,该控件将停止减法。
private void button7_Click(object sender, EventArgs e){
// I have no idea why you have enabled the button here, mate
//Converting the quantity
int qty = Convert.ToInt32(nudQuantity.Value);
if((roSmallCup.Checked & rdoStraw.Checked) == true) {
//triggers when the Inventory of strawberry is more than zero
if( (InvStrawberry - (4 * qty)) > 0 ){
InvStrawberry = InvStrawberry - (4 * qty);
} else
{
button7.ENabled = false;
MessageBox.Show("We are out of inventory,Sorry!");
}
label17.Text = Convert.ToString(InvStrawberry);
}
}
答案 2 :(得分:0)
如果您希望每次更改InvStrawberry
的值时按钮都可能更新,那么最好的选择是为InvStrawberry
设置属性并在那里更新按钮的状态。这样可以减少在整个代码中需要使用的逻辑。
尝试一下:
public class StrawberryForm : Form
{
private int _invStrawberry = 0;
private int InvStrawberry
{
get
{
return _invStrawberry;
}
set
{
_invStrawberry = value;
button7.Enabled = _invStrawberry > 0;
}
}
private void button7_Click(object sender, EventArgs e)
{
int qty = Convert.ToInt32(nudQuantity.Value);
if ((rdoSmallCup.Checked & rdoStraw.Checked) == true)
{
this.InvStrawberry -= 4 * qty;
label17.Text = Convert.ToString(this.InvStrawberry);
}
}
}
答案 3 :(得分:-1)
您需要移动它:
`[1, 27, 729, 512, 8, 512, 1, 8]
[1, 27, 729, 512, 8, 512, 8, 1]
[1, 27, 729, 512, 512, 1, 8, 8]
[1, 27, 729, 512, 512, 8, 1, 8]
[1, 27, 729, 512, 512, 8, 8, 1]
[1, 64, 8, 64, 125, 512, 512, 512]
[1, 64, 8, 64, 512, 125, 512, 512]
[1, 64, 8, 64, 512, 512, 125, 512]
[1, 64, 8, 64, 512, 512, 512, 125]
[1, 64, 8, 125, 64, 512, 512, 512]`
一个Updae方法或循环,该方法或循环将在您单击时立即对其进行定期检查,因此一旦被禁用,将永远不会再次调用它以启用它,因为此时您无法单击它。
另外,假设您有两个变量, if (InvStrawberry <= 0) {
button7.Enabled = false;
} else {
button7.Enabled = true;
}
代表您的剩余库存,numberStrawberries
代表您购买的四个草莓...
lot