簡體   English   中英

VB.NET事件未觸發

[英]VB.NET Events not Firing

我收到了另一個開發商的項目。 長話短說,該程序從內部網絡上托管的SQL數據庫中提取了數千條條目。 該程序顯示條目,並允許您過濾它們以方便使用。

最近,我們遇到了一個問題,其中已清除了SQL數據庫中的表(通常每天都會重新生成,但是幾天都是空白。)發現並解決了該問題(對VB項目未做任何更改)以重新填充該表; 但是從那時起,VB項目將不再觸發事件。

該程序長數千行代碼,因此我無法發布整個內容。 但我會盡力使症狀:

  1. 表單對象可以觸發事件(Form_Closing,Form_Closed等)
  2. 現有控件(單選按鈕,按鈕,圖片框,數據網格視圖等)將不會觸發任何事件。
  3. 如果添加新控件(如按鈕),則不會觸發事件。
  4. 如果在應該觸發的子節點上放置調試斷點,它將不會中斷。

這是應該觸發但不觸發的方法的示例:

`Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    MsgBox("GOT IT!")
End Sub`

這是Form_Load子:

<DllImport("user32.dll")> _
Private Shared Function SendMessage(ByVal hWnd As IntPtr, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer
End Function

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    InitializeComponent()
    Try
        DataGridView_Items.RowsDefaultCellStyle.SelectionBackColor = Color.Yellow
        DataGridView_Items.RowsDefaultCellStyle.SelectionForeColor = Color.Black
        CheckBox_Highlight.DataBindings.Add("Visible", RadioButton_BD, "Checked")
        Try
            'Populates the DGV
            LoadTable()
            TableLayoutPanel_BD_Parts.Visible = True
            TableLayoutPanel_PF_Parts.Visible = False

            'Exits if no data was pulled from the database
            If dbDataSet.Rows.Count = 0 Or pfDataSet.Rows.Count = 0 Then Application.ExitThread()

        Catch ex As Exception
            Using w As StreamWriter = File.AppendText(logFile)
                Log("Function Form1_Load says " & ex.Message & " @ " & DateTime.Now.ToString("yyyy-MM-dd") & "_" & DateTime.Now.ToString("HH-mm-ss"), w)
            End Using
        End Try

        BackgroundWorker1.RunWorkerAsync()
        formLoaded = True
    Catch exx As Exception
        MsgBox(exx.ToString())
    End Try

End Sub

有一個背景工作人員,但它似乎可以正常工作並退出。

所有形式都可以交互; 但請勿觸發事件。 (我可以更改單選按鈕的選擇,單擊該按鈕,在文本框中鍵入文字,等等。)

我知道這有點含糊,我只是希望有人可以就可能導致我調查的問題提出建議。 我可以提供細節; 但我無法在此處復制整個代碼。

謝謝你的幫助!

代碼中非常奇怪的是,您從Form_Load調用InitializeComponent() 通常,此方法在Form構造函數中調用,因此您可以將其從Form_Load刪除。

我在PC上進行了一些測試:如果您調用了兩次InitializeComponent()您將復制表單中的每個控件,並且它們的事件不再觸發,可能是因為您有兩個具有相同名稱的控件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM