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

时间:2013-03-12 21:01:53

标签: c# event-handling windows-ce

我有一个带有事件处理程序的按钮;在设计器中双击它会将我带到代码中。处理程序无处取消/分离。

我希望运行的一些代码显然不是,所以我在处理程序中放了一堆MessageBox.Show()s,即使在最开始,但它们都没有显示(注意:我无法单步执行)代码;我必须这样做(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(最终)触发;但是,使用“查找”按钮,它完全抢占了它......我看,当我单击它时,我从最后的“关闭”按钮看到消息,但是当我单击它时,我从未在“查找”按钮处理程序中看到任何消息。 ..

更新2

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

我想有一个原因是“在那里”或“在这里”有如此多的维护工作:因为有太多糟糕的破坏代码而且因为制造这样一团糟的猫在它上划了一堆沙子然后走开了。

这段代码充满了“嗯?!?@#$%^?!?”瞬间,奇怪的旋转根本没有评论,但这个评论:

// Check connection
checkConnection();

1 个答案:

答案 0 :(得分:2)

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

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

在表单的Designer文件中,就是这样。