创建一个变量来验证按钮事件处理程序是否被单击

我有一些按钮事件处理程序,我需要验证它们是否被单击。我试图在事件中放入一个布尔值,但由于有多个按钮,我需要布尔值在每次退出事件时重置。


我尝试将布尔值放入事件中,但它仅适用于单个按钮:


public void verify()

{

    if (this.textBox.Text != null &&

            this.comboBox.Text != null

            && (button bool here)

          )

    {

        tabControl.SelectedIndex = 2;

    }


    else

    {

        MessageBox.Show("Enter parameters");

    }

}

如果没有单击所有按钮,我希望 bool 为 false,并且在所有按钮至少单击一次后为 true。


private void Button_Click(object sender, EventArgs e)

{


    Form temp = new Form(Image);

    temp.ShowDialog();

    int x = temp.x;

    int y = temp.y;

    int w = temp.w;

    int h = temp.h;

}

这是一个示例按钮,不同页面上可能还有 20 个类似的按钮。单个页面上平均有 4 到 5 个按钮。验证按钮点击的最佳方法是什么?


跃然一笑
浏览 123回答 1
1回答

猛跑小猪

实现此目的的一种方法是将这些bool字段封装到一个表示程序状态的类中,以及一个计算属性,true如果所有其他字段都是 则返回该计算属性true。例如:class ProgramState{    public bool UserAcceptedAgreement { get; set; }    public bool UserAcknowledgedLiability { get; set; }    public bool UserSubmittedSignature { get; set; }    public bool EverythingAccepted =>        UserSubmittedSignature &&        UserAcknowledgedLiability &&        UserSubmittedSignature;}然后,您可以在您的类中创建此类的实例Form,并通过按钮单击事件设置属性,并在方法中Verify检查它们在if语句中是否全部为 true:public partial class Form1 : Form{    private ProgramState programState = new ProgramState();    public Form1()    {        InitializeComponent();    }    private void btnAcceptAgreement_Click(object sender, EventArgs e)    {        programState.UserAcceptedAgreement = true;    }    private void btnAcceptLiability_Click(object sender, EventArgs e)    {        programState.UserAcknowledgedLiability = true;    }    private void btnSubmitSignature_Click(object sender, EventArgs e)    {        programState.UserSubmittedSignature = true;    }    public void verify()    {        if (programState.EverythingAccepted)        {            tabControl.SelectedIndex = 2;        }        else        {            MessageBox.Show("Enter parameters");        }    }}
打开App,查看更多内容
随时随地看视频慕课网APP