0

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

我有一个表单中的这个事件处理程序:

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后缀将从代码中删除。为了达到预期的效果,我每次都必须重新添加它。

我应该提到,当我编写时,IntelliSense 不会建议 DataSet 中的任何 DataTables myDataSet.,但是在编写 DataTable 的正确名称后,所有可用的事件都会显示出来,并且代码运行良好。

4

2 回答 2

0

看看这是否有帮助:

Private Sub myDataTable_ColumnChanging(ByVal sender As System.Object, ByVal e As _
DataColumnChangeEventArgs) Handles myDataSet.Tables("myDataTable").ColumnChanged

还要确保数据集被声明为类级别。您的部分问题可能是 Intellisense 无法在其范围之外找到数据集。

于 2013-06-24T08:40:22.617 回答
0
Handles myDataSet.myDataTable.ColumnChanged

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

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

于 2013-06-24T13:08:59.083 回答