Visual Studio设计器删除Handles

时间:2013-06-24 07:27:57

标签: .net vb.net visual-studio-2010

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的正确名称后,所有可用的事件都显示出来,并且代码正常工作完美。

2 个答案:

答案 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关键字来订阅活动。