Нет, нет ключевого слова, которое позволит вам это сделать. Однако каждое событие, поднятое элементом управления, проходит в параметре sender
, который вы можете использовать, чтобы определить, какой конкретный элемент управления поднял это событие.
Обратите внимание, что этот параметр всегда вводится в качестве базового Object
(потому что он может представлять любой возможный элемент управления), поэтому вам нужно сбрасывать в более конкретный класс управления, если вам нужно получить доступ к любому из уникальных членов, разоблачает. Поскольку вы управляете событием, поднятым с помощью TextBox
, вы знаете, что sender
должен быть типа TextBox
, поэтому вы можете просто использовать DirectCast
для обработки восходящего потока. Вам не нужно беспокоиться о том, что будет выброшено InvalidCastException
.
Например, ваш приведенный выше пример станет:
Private Sub TextBox1_TextChanged(ByVal sender As Object, ByVal e As EventArgs) Handles TextBox1.TextChanged
Dim textBox As TextBox = DirectCast(sender, TextBox)
MessageBox.Show("The text is: " & textBox.Text)
End Sub
Это, как говорится, есть несколько относительно вещей, которые выскакивают на меня в вашем вопросе:
Любой что ваш подход к решению проблемы - это «копирование» кода, вы должны остановиться, сделать шаг назад и попытаться выяснить, есть ли лучший способ достичь конечной цели.
Например, если вам нужно каждый текстовое поле на форме, чтобы реагировать таким же образом, всякий раз, когда конкретное событие возникает, следует рассмотреть возможность создания подклассов существующего TextBox
контроля и консолидации всех кода в одном месте. Помните, что вы можете наследовать большинство стандартных элементов управления для добавления пользовательских функций. Это часто намного лучше, чем копирование и вставка кода в несколько мест в вашем проекте. Если вам когда-либо понадобится отследить ошибку или изменить эту функциональность, вам нужно будет изменить ее только на одном месте в коде, а не на нескольких. В несколько более выгодном случае вы сможете использовать Me
для ссылки на этот элемент управления при редактировании его подкласса.
Вы всегда должны связывать (объединять) строки, используя оператор &
в VB.NET, а не знак +
. Или, может быть, даже лучше, методы String.Concat
или String.Format
.
В VB.NET нет причин использовать MsgBox
, в отличие от MessageBox.Show
. Нет, это не улучшит производительность вашего приложения, но это хорошая практика для работы на языках .NET.
Я пробовал искать «MyBase, Parent, Me», но я не нашел ничего, что саморефлексирует для элементов управления ... :( –