持续检查用户控件中的按钮是否单击



我有一个类名为 PinPad 的用户控件。它包含一个我处理其单击事件btnGetAccess_Click(object sender, EventArgs e)Button和一个用于读取在TextBox中输入的Password的属性。

我在Form1上放了一个PinPad控件的实例,当单击按钮并且密码正确时,它应该打开Form2

因为我把它放在构造函数中,当前检查密码什么也没做,因为它只会在加载Form1并且尚未输入密码时检查密码。

那么,如何才能在单击用户控件类中的按钮后Form1连续检查密码呢?

这是我当前的代码:

public Form1()
{
    InitializeComponent();
    if (pinPad1.Password == "123456")
    {
        // open form2
    }
}

您无需连续检查按钮单击。创建事件以订阅它们。然后,当事件引发时,他们会通知您。

应在用户控件中创建一个新事件,例如,当用户控件中的按钮单击时引发该事件。然后,您可以在表单中订阅该事件并在那里运行您的逻辑。

例:

[System.ComponentModel.DefaultEvent("ButtonClicked")]
public partial class SampleControl: UserControl
{
    public SampleControl()
    {
        InitializeComponent();
        button1.Click += button1_Click;
    }
    public event EventHandler ButtonClicked;
    protected virtual void OnButtonClicked(EventArgs e)
    {
        var handler = ButtonClicked;
        if (handler != null)
            handler(this, e);
    }
    private void button1_Click(object sender, EventArgs e)
    {
        //Do Stuff then raise event
        OnButtonClicked(EventArgs.Empty);
    }
}

可以将控件放在窗体上并处理其ButtonClicked事件。由于我们将ButtonClicked设置为控件的默认事件,因此当您在设计器中双击它时,它会创建事件处理程序并订阅事件:

private void sampleControl1_ButtonClicked(object sender, EventArgs e)
{
    MessageBox.Show("Button Clicked");
}

作为 C# 开发人员,您应该像了解类、方法、属性等一样了解事件。您可以了解有关处理和引发事件的更多信息。

使用计时器。有一个很好的例子。实现它,不要忘记在正确输入和检查密码后停止计时器。

相关内容

  • 没有找到相关文章

最新更新