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 のアイデアに基づいて、MessageBox を button_close ハンドラに追加しました。そして、それをクリックすると起動しますが、それは他のコードが最初に実行された後でのみです。この場合、他のコードは Close_Click が (最終的に) 発生するのを妨げません。ただし、[検索] ボタンを使用すると、それは完全にプリエンプトされます... IOW、クリックすると最後に [閉じる] ボタンからのメッセージが表示されますが、クリックしても [検索] ボタンハンドラーにメッセージは表示されません。 ..

更新 2

オーマイランタ/そうじゃないって言ってよ、ジョー!何が起こっているかというと、フォームのオーバーロードされたコンストラクターでイベントが開始され、何らかの形でこのイベントが常に発生します (検索ボタンをクリックした後)。私が見ているメッセージは、ボタンイベントハンドラーのすべてをプリエンプトし、barcodeScanner_BarcodeScan() によって呼び出される barcodeScanner_BarcodeScan1() から呼び出される processBarcode1() によって呼び出される processBarcode() によって呼び出されるメソッドで発生します)、frmEntry のオーバーロードされたコンストラクターで設定されます。前のコーダーが私を狂わせようとしていたとしたら、彼はこれ以上のことはできなかったでしょう。

「外」または「外」でこれほど多くの保守作業が行われているのには理由があると思います。壊れたコードが非常に多く、コードをめちゃくちゃにすると、猫が大量の砂を引っ掻いて立ち去ってしまうからです。

そして、このコードには「え?!?@#$%^?!?」がぎっしり詰まっています。奇妙な旋回についてはまったくコメントされていませんが、次のコメントがあります

// Check connection
checkConnection();

4

1 に答える 1

2

問題はClick、ボタンのイベントが適切にサブスクライブされていない可能性があります。似ている線がない場合

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

フォームの Designer ファイルで、それだけです。

于 2013-03-12T21:07:00.897 に答える