我有一个带有事件处理程序的按钮;2 .点击它,设计师会把我带到代码处。处理程序没有被解挂/分离。
一些我期望运行的代码显然不是,所以我在处理程序中放了一堆MessageBox.Show()s,即使在最开始,但它们都没有显示(注意:我不能逐步执行代码;我必须这样做(argggghhhh))。
下面是一些代码:
private void btnFind_Click(object sender, System.EventArgs e) // Find and list Records
{
MessageBox.Show("Made it into btnFind_Click 0"); //TODO: Remove after debugging
try
{
if (barcodeScanner != null)
{
// Turn off the listening
barcodeScanner.BarcodeScan -= new BarcodeScanner.BarcodeScanEventHandler(barcodeScanner_BarcodeScan);
}
MessageBox.Show("Made it into btnFind_Click 1"); //TODO: Remove after debugging . . .
是什么阻止了这段代码的执行?
更新基于Mike C的想法,我在button_close处理程序中添加了一个MessageBox。当我点击它时,它会触发,但只有在其他代码先运行之后;在这种情况下,其他代码并不能阻止Close_Click(最终)触发;然而,使用查找按钮,它完全抢占了它…现在,当我单击Close按钮时,我看到了它的消息,但是当我单击Find按钮处理程序时,我从未看到它中的任何消息…
更新2
哦,我的亚特兰大/说它不是这样的,乔!在表单的重载构造函数中启动了一个事件,并且总是在此时(单击find按钮之后)触发该事件。我看到的消息抢占了按钮事件处理程序中的所有内容,发生在由processBarcode()调用的方法中,该方法由processBarcode1()调用,该方法由barcodeScanner_BarcodeScan1()调用,该方法由barcodeScanner_BarcodeScan1()调用,该方法由barcodeScanner_BarcodeScan()调用,该方法在frmEntry的重载构造函数中设置。如果之前的程序员想把我逼疯,他也不会做得更好。
我想有这么多的维护工作是有原因的:因为有这么多坏的代码,因为猫把代码弄得一团糟,在上面抓了一堆沙子,然后走开了。
这段代码充满了"huh?!?@#$%^?!?"的时刻,在那里奇怪的旋转根本没有被注释,但是有这个注释:
// Check connection
checkConnection();
问题可能是按钮的Click
事件没有正确订阅。如果没有类似
this.btnFind.Click += new System.EventHandler(this.btnFind_Click);