0

我有一个带有事件处理程序的按钮;在设计器中单击 2 次会将我带到代码。处理程序无处被脱钩/分离。

我期望运行的一些代码显然不是,所以我在处理程序中放了一堆 MessageBox.Show(),即使是在最开始时,但它们都没有显示(注意:我无法单步执行代码;我必须这样做(arggghhhh))。

这是一些代码:

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 (最终)触发;但是,使用“查找”按钮,它完全抢占了它...... IOW,当我单击它时,我在最后看到来自“关闭”按钮的消息,但是当我单击它时,我从未在“查找”按钮处理程序中看到任何消息。 ..

更新 2

哦,我的兰达/说不是这样,乔!发生的事情是在表单的重载构造函数中启动了一个事件,并且不知何故,这个事件总是在那个时候被触发(在单击查找按钮之后)。我看到的消息抢占了按钮事件处理程序中的所有内容,发生在由 processBarcode() 调用的方法中,该方法由 processBarcode1() 调用,该方法由barcodeScanner_BarcodeScan1() 调用,barcodeScanner_BarcodeScan( ),这是在 frmEntry 的重载构造函数中设置的。如果以前的编码员打算让我发疯,他就不会做得更好了。

我想“那里”或“这里”有如此多的维护工作是有原因的:因为有太多坏的代码,而且因为那些把它弄得一团糟的猫在上面抓了一堆沙子然后走开了。

这段代码充满了“嗯?!?@#$%^?!?” 那些奇怪的旋转根本没有被评论的时刻,但是有这样的评论:

// Check connection
checkConnection();

4

1 回答 1

2

问题可能是Click按钮的事件未正确订阅。如果没有类似的线

this.btnFind.Click += new System.EventHandler(this.btnFind_Click);

在表单的设计器文件中,就是这样。

于 2013-03-12T21:07:00.897 回答