为什么按钮的事件处理程序没有触发?



我有一个带有事件处理程序的按钮;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);

相关内容

  • 没有找到相关文章

最新更新