C# 持续检查usercontrol中的按钮是否已单击
我有一个类名为PinPad的用户控件。它包含一个C# 持续检查usercontrol中的按钮是否已单击,c#,winforms,events,user-controls,event-handling,C#,Winforms,Events,User Controls,Event Handling,我有一个类名为PinPad的用户控件。它包含一个按钮,我处理了它的click事件btnGetAccess\u click(objectsender,EventArgs e)和一个属性,用于读取在文本框中输入的密码 我把PinPad控件的一个实例放在我的Form1上,当点击按钮并且密码正确时,它应该会打开Form2 因为我把它放在构造函数中,所以当前检查密码没有任何作用,因为它只会在Form1加载时检查密码,而且还没有输入密码 那么,在单击用户控件类中的按钮后,如何使Form1连续检查密码 这是我
按钮
,我处理了它的click事件btnGetAccess\u click(objectsender,EventArgs e)
和一个属性,用于读取在文本框中输入的密码
我把PinPad
控件的一个实例放在我的Form1
上,当点击按钮并且密码正确时,它应该会打开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);
}
}
您可以将控件放在窗体上,并处理其按钮单击事件。由于我们将按钮Clicked
设置为控件的默认事件,因此当您在designer中双击它时,它将创建事件处理程序并订阅事件:
private void sampleControl1_ButtonClicked(object sender, EventArgs e)
{
MessageBox.Show("Button Clicked");
}
作为一名C#开发人员,您应该尽可能多地了解事件的类、方法、属性等。您可以了解更多信息。您是否尝试过将整个if语句移动到按钮的click eventhandler中?是的,但我无法从usercontrol中打开和关闭表单。它必须在form1课程中完成。非常不清楚你想要实现什么。。。如果您需要一直运行代码,请使用Timer(您可能已经阅读了很多关于它的问题)。我只需要将If语句放在构造函数之外的某个位置,这样它就会多次检查密码。现在,我的代码只在表单加载时检查密码,但密码为空(尚未输入)。您不需要连续单击按钮来检查密码。创建事件以订阅它们。然后当一个事件发生时,他们会通知你。非常感谢你,这帮了大忙。我以前不知道DefaultEvent,你是我的英雄!