.net VisualStudio设计器删除句柄

.net VisualStudio设计器删除句柄,.net,vb.net,visual-studio-2010,.net,Vb.net,Visual Studio 2010,中提到了我的问题,但答案都集中在问题的其他部分 我将此事件处理程序设置为: Private Sub myDataTable_ColumnChanging(ByVal sender As System.Object, ByVal e As DataColumnChangeEventArgs) Handles myDataSet.myDataTable.ColumnChanged If (e.ProposedValue = "") Then e.ProposedValue =

中提到了我的问题,但答案都集中在问题的其他部分

我将此事件处理程序设置为:

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
当我打开此表单的设计器,进行任何修改并保存时,
句柄
后缀将从代码中删除。为了达到预期效果,我每次都要重新添加它

我应该提到,当我编写
myDataSet时,IntelliSense不建议数据集中的任何数据表。
,但在写入数据表的正确名称后,所有可用事件都会显示出来,代码工作正常。

看看这是否有帮助:

Private Sub myDataTable_ColumnChanging(ByVal sender As System.Object, ByVal e As _
DataColumnChangeEventArgs) Handles myDataSet.Tables("myDataTable").ColumnChanged
还要确保数据集声明为类级别。您的部分问题可能是Intellisense无法在其作用域之外找到数据集

Handles myDataSet.myDataTable.ColumnChanged
Handles关键字由设计器自动生成。用于从窗体上删除的组件或控件订阅事件。您的“myDataSet.myDataTable”对象显然不是这样的组件,我可以从名称看出,它没有必需的WithEvents关键字。看起来你自己键入了Handles子句。设计师在注意到差异时再次删除它


您需要在代码中使用
AddHandler
关键字来订阅事件。

这实际上会导致编译错误;“找不到事件“表”。数据集来自数据库,使用designer(在designer.vb中声明)创建,因此我猜它是在类级别声明的。正如前面提到的,您可能必须使用AddHandler语句,该语句有效且有意义,谢谢!为什么不把它作为答案提交呢?