2013-06-24 4 views
0

Моя проблема упомянута в this question, но ответы все сосредоточены на других частях вопроса.Дизайнер Visual Studio удаляет ручки

У меня есть этот обработчик события в форме:

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 не предлагает какие-либо из DataTables в DataSet, когда я пишу myDataSet., но после написания правильного имени DataTable появятся все доступные события, и код работает отлично.

+0

Это работает и имеет смысл, спасибо! Почему бы не отправить его в качестве ответа? – joharei

ответ

0
Handles myDataSet.myDataTable.ColumnChanged 

Ручки ключевое слово автоматически генерируется дизайнером. Используется для подписки на событие из компонента или элемента управления, который вы сбросили в форме. Ваш объект myDataSet.myDataTable явно не является таким компонентом, я могу сказать по имени, у него не будет ключевого слова WithEvents. Похоже, вы сами ввели инструкцию Handles. Дизайнер удаляет его снова, когда он замечает несоответствие.

Для подписания мероприятия вам необходимо использовать ключевое слово AddHandler в своем коде.

0

Смотрите, если это помогает:

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

Кроме того, убедитесь в наборе данных объявлен на уровне класса. Частью вашей проблемы может быть то, что Intellisense не может найти набор данных за пределами его области.

+0

Это фактически приводит к ошибке компиляции; «Таблицы событий не могут быть найдены». DataSet - это база данных и создается с помощью конструктора (объявленного в Designer.vb), поэтому я предполагаю, что он объявлен на уровне класса. – joharei

+0

Как уже упоминалось, вам, вероятно, придется прибегнуть к использованию оператора AddHandler – tinstaafl

Смежные вопросы