C#中的自动按钮单击
本文关键字:按钮 单击 | 更新日期: 2023-09-27 18:28:00
我需要在不实际点击按钮的情况下自动执行下面的按钮点击事件。。
请给我一个简单的解决方案。。
private void button4_Click(object sender, EventArgs e)
{
int i = 0, aResult = 0;
int[] aLen = new int[1];
byte[] aUID = new byte[7];
byte[] NbTg = new byte[1];
byte[] RData = new byte[64];
byte[] RDataLen = new byte[1];
byte[] InitData = new byte[64];
String ValStr = "";
aResult = aResult = PN_InListPassiveTarget(0, 0, 1, 0, 0, InitData, NbTg, RDataLen, RData);
if (0 == aResult)
{
for (i = 0, ValStr = ""; i < RData[4]; i++)
ValStr += RData[5 + i].ToString("X2");
textBox1.Text = ValStr;
}
else
MessageBox.Show("Please Hold Your Meal Card");
}
如果有一个事件会检测到卡,您可以在那里设置一个计时器,使其在2秒后运行以执行此代码。如果您仍然需要通过单击按钮来运行代码,请将代码移动到一个方法并从两个位置调用它。
为什么不使用这样的计时器?-
// Create a timer with a two second interval.
aTimer = new System.Timers.Timer(2000);
// Hook up the Elapsed event for the timer.
aTimer.Elapsed += button4_Click;
aTimer.Enabled = true;
Elapsed
事件的实际事件处理程序签名是this-
private static void OnTimedEvent(Object source, ElapsedEventArgs e)
{
Console.WriteLine("The Elapsed event was raised at {0}", e.SignalTime);
}
http://msdn.microsoft.com/en-us/library/system.timers.timer(v=vs.110).aspx
但是EventArgs
是ElapsedEventArgs
的一个超类,所以您可以很好地使用它。
您可以使用计时器以2秒为间隔启动事件。您可以将NFC读卡器逻辑置于其自身的功能中,并让计时器从第一次点击开始调用该功能,直到成功读取卡:
using System.Timers;
public partial class MainWin : Form
{
public MainWin()
{
InitializeComponent();
}
Timer nfcTimer;
private void buttonStartNFC_Read_Click(object sender, EventArgs e)
{
try
{
nfcTimer = new Timer(2000)); '' <- 2000 milliseconds is 2 seconds
nfcTimer.Elapsed += new ElapsedEventHandler(readCard);
nfcTimer.Enabled = true;
buttonNFC.Enabled = false; '' u probably want to disable the button
}
catch (Exception ex)
{
print("Exception in :" + ex.Message);
}
}
你可以把NFC读卡器逻辑放在这里:
public void readCard(object sender, ElapsedEventArgs e){
// read card
// failed to read the NFC card -> continue with the timer every 2 sec
// The card was read successfully, you can disable the timer
nfcTimer.Enabled = false;
}
您可以在此处找到有关如何以编程方式调用按钮单击事件的更多信息:http://msdn.microsoft.com/en-ca/library/hkkb40tf(v=vs.90).aspx