this question中提到了我的问题,但答案都集中在问题的其他部分。
我有一个表格中的事件处理程序:
Private Sub myDataTable_ColumnChanging(ByVal sender As System.Object, ByVal e As DataColumnChangeEventArgs) Handles myDataSet.myDataTable.ColumnChanged
If (e.ProposedValue = "") Then
e.ProposedValue = DBNull.Value
End If
End Sub
当我打开此表单的设计器,进行任何修改并保存时,Handles
后缀将从代码中删除。我必须每次都重新添加它才能达到预期的效果。
我应该提一下,当我写myDataSet.
时,IntelliSense不建议DataSet中的任何DataTable,但是在写完DataTable的正确名称后,所有可用的事件都显示出来,并且代码正常工作完美。
答案 0 :(得分:0)
看看这是否有帮助:
Private Sub myDataTable_ColumnChanging(ByVal sender As System.Object, ByVal e As _
DataColumnChangeEventArgs) Handles myDataSet.Tables("myDataTable").ColumnChanged
还要确保将数据集声明为类级别。部分问题可能是Intellisense无法在其范围之外找到数据集。
答案 1 :(得分:0)
Handles myDataSet.myDataTable.ColumnChanged
Handles 关键字由设计人员自动生成。用于从您在表单上放置的组件或控件订阅事件。您的“myDataSet.myDataTable”对象显然不是这样的组件,我可以从名称中看出,它不会具有所需的WithEvents关键字。看起来你自己输入了Handles条款。当设计师注意到差异时,设计师会再次删除它。
您需要在代码中使用AddHandler
关键字来订阅活动。