【问题标题】:How to know which button is pressed next c#如何知道接下来按下哪个按钮c#
【发布时间】:2023-03-09 18:03:01
【问题描述】:

我正在为一家比萨店开发一个订单接收系统,我想按下比萨的尺寸,然后将按下的任何尺寸按钮 + 什么比萨添加到列表框中。例如小号+夏威夷。到目前为止,这就是我尝试这样做的方式,但是它只能工作一次,因为我不确定如何重置 bool。

    bool ButtonSmallClicked = false;

    private void ButtonSmall_Click(object sender, EventArgs e)
    {
        ButtonSmallClicked = true;
    }

    private void ButtonHawaiian_Click(object sender, EventArgs e)
    {
        if (ButtonSmallClicked == true)
        {
            listBox1.Items.Add(string.Format("{0} {1}", buttonSmall.Text, buttonHawaiian.Text));
        }

【问题讨论】:

  • 你是什么意思“重置布尔”?将其设置回 false ? "ButtonSmallClicked = false;"
  • @VietDD 是的。我不确定如何
  • 考虑使用比萨大小的单选按钮(您可以使它们看起来像实际按钮),而不是将选定的按钮值与选定的比萨类型相结合

标签: c# button boolean


【解决方案1】:

使用.Tag 属性并将点击的值保存到变量中以供进一步处理。

public class SelectedPizza
{
    public string Size { get; set; }
    public string Name { get; set; }

    public string Format() => $"{Size} {Name}";
}

public class MyForm
{
    private readonly SelectedPizza _selectedPizza;

    public MyForm()
    {
        buttonSmallSize.Tag = "Small";
        buttonSmallSize.Click += ButtonSizeClick;
        buttonLargeSize.Tag = "Large";
        buttonLargeSize.Click += ButtonSizeClick;
       
        buttonHawaiian.Tag = "Hawaiian";
        buttonHawaiian.Click += ButtonNameClick;

        _selectedPizza = new SelectedPizza();
    }   

    private void ButtonSizeClick(object sender, EventArgs e)
    {
        var button = (Button)sender;
        _selectedPizza.Size = button.Tag.ToString();
    }

    private void ButtonNameClick(object sender, EventArgs e)
    {
        var button = (Button)sender;
        _selectedPizza.Name = button.Tag.ToString();
        
        listBox1.Items.Add(_selectedPizza.Format());
    }
}

【讨论】:

    【解决方案2】:

    对你有用吗?

    private void ButtonSmall_Click(object sender, EventArgs e)
        {
            if(ButtonSmallClicked ==true)
                  ButtonSmallClicked = false;
            else
                  ButtonSmallClicked = true;
        }
    

    
     private void ButtonHawaiian_Click(object sender, EventArgs e)
        {
            if (ButtonSmallClicked == true)
            {
                listBox1.Items.Add(string.Format("{0} {1}", buttonSmall.Text, buttonHawaiian.Text));
    ButtonSmallClicked == false;
            }
    }
    

    【讨论】:

    • “你的意思是什么?” 似乎更适合作为对问题的评论以要求更清楚。
    • 为什么不ButtonSmallClicked = !ButtonSmallClicked;
    猜你喜欢
    • 1970-01-01
    • 2022-08-18
    • 1970-01-01
    • 2011-04-11
    • 2021-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多