VB.NET事件未触发
我收到了另一个开发者的项目。长话短说,该程序从我们内部网络上托管的SQL数据库中提取数千个条目。该程序显示条目,并允许您为方便起见对其进行筛选 最近我们遇到了一个问题,SQL数据库中的一个表被清除了(通常每天都会重新生成,但有几天它是空的。)发现了这个问题并解决了它(没有对VB项目进行任何更改)以重新填充该表;但从那时起,VB项目将不再触发事件 这个程序有几千行代码,所以我不能发布全部内容;但我会尽力给出症状:VB.NET事件未触发,vb.net,Vb.net,我收到了另一个开发者的项目。长话短说,该程序从我们内部网络上托管的SQL数据库中提取数千个条目。该程序显示条目,并允许您为方便起见对其进行筛选 最近我们遇到了一个问题,SQL数据库中的一个表被清除了(通常每天都会重新生成,但有几天它是空的。)发现了这个问题并解决了它(没有对VB项目进行任何更改)以重新填充该表;但从那时起,VB项目将不再触发事件 这个程序有几千行代码,所以我不能发布全部内容;但我会尽力给出症状: 表单对象可以触发事件(表单关闭、表单关闭等) 现有控件(单选按钮、按钮、图片盒、数据
`Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
MsgBox("GOT IT!")
End Sub`
以下是表格_loadsub:
<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
_
私有共享函数SendMessage(ByVal hWnd作为IntPtr,ByVal wMsg作为Integer,ByVal wParam作为Integer,ByVal lParam作为Integer)作为Integer
端函数
私有子表单1_Load(发送方作为对象,e作为事件参数)处理MyBase.Load
初始化组件()
尝试
DataGridView_Items.RowsDefaultCellStyle.SelectionBackColor=Color.Yellow
DataGridView_Items.RowsDefaultCellStyle.SelectionForeColor=Color.Black
复选框\突出显示.数据绑定.添加(“可见”,单选按钮\选中”)
尝试
'填充DGV
加载表()
TableLayoutPanel_BD_Parts.Visible=True
TableLayoutPanel\u PF\u Parts.Visible=False
'如果没有从数据库中提取数据,则退出
如果dbDataSet.Rows.Count=0或pfDataSet.Rows.Count=0,则Application.ExitThread()
特例
使用w作为StreamWriter=File.AppendText(日志文件)
日志(“函数Form1_Load says”&ex.Message&“@”和DateTime.Now.ToString(“yyyy-MM-dd”)&“&DateTime.Now.ToString(“HH-MM-ss”),w)
终端使用
结束尝试
BackgroundWorker1.RunWorkerAsync()
formLoaded=True
捕获exx作为异常
MsgBox(exx.ToString())
结束尝试
端接头
有一个backgroundworker,但它似乎工作正常并退出
所有形式都可以交互;但不要触发事件。(我可以更改单选按钮的选择、单击按钮、在文本框中键入内容等)
我知道这有点含糊不清,我只是希望有人能给我一些建议,让我可以研究一下可能导致这种情况的原因。我可以提供细节;但我不能在这里复制整个代码
谢谢你的帮助 代码中有一件非常奇怪的事情,那就是从
表单加载调用InitializeComponent()
。
通常在表单
构造函数中调用此方法,因此您可以将其从表单加载
中删除
我在我的电脑上做了一些测试:如果你调用了两次InitializeComponent()
你复制了表单中的每个控件,它们的事件不再触发,可能是因为你有两个同名的控件。你对我可以添加的信息有什么建议吗?我以前从未见过这种情况,可能有人知道会导致事件不发生的不同事情;他们可以分享并解决我的问题。这就是我的希望。您是否尝试过在不同的机器上运行它(也就是说,.NET Framework在一台机器上不知怎么搞砸了,导致了这种情况)?你有一个旧版本的备份,你可以测试它是否有效吗?是的,我已经在3台机器上运行过了。奇怪的是,在SQL数据库出现问题之前工作的二进制文件显示出完全相同的问题。我已经通过监视数据集并手动输入存储过程来验证它是否成功地从数据库中提取条目。我发现了一件奇怪的事情:为什么您在Form\u Load()
中初始化组件()
,而不是构造函数?@tezzo是的,您是对的。InitializeComponent()应该在构造函数中。