Переменные в VB.NET имеют очень специфическую область действия , ограничивая их доступность различными частями вашего кода в зависимости от того, как и где они объявлены.
Ваша переменная Sentence
имеет область действия уровня процедуры, что означает, что она доступна только в рамках процедуры, в которой она была объявлена. В вашем случае она объявлена в методе ABCs_Load
(" Sub "), поэтому он будет доступен только для кода в этом методе.
Если вместо этого вы хотите иметь доступ к переменной Sentence
в любых методов вашего класса (Forms
всегда являются классами в VB.NET), вы можете объявить переменная с областью действия уровня модуля. Для этого вам нужно добавить личное поле к вашему классу Sentences
, вне любого конкретного метода (Sub или Function). Эта декларация будет выглядеть примерно так:
Private Sentence As String
Конечно, вы также можете объявить переменную как Public
вместо Private
, что сделает ее доступной для других классов за пределами текущего класса. Например, если у вас была форма секунда , для которой вы хотели иметь доступ к содержимому вашей переменной Sentence
, вы могли бы объявить ее как Public
в классе первой формы, а затем получить доступ к ней из один из методов в втором классе формы, например:
MessageBox.Show(myForm1.Sentence)
Обратите внимание, что, поскольку он находится в другой форме (классе, отличном от того, в котором он доступен), вы должны полностью уточнить ссылку на него. Это похоже на то, как ваша семья может называть вас «Майк», но другие должны называть вас «Майк Джонс», чтобы отличать вас от «Майка Смита».
Для дальнейшего чтения также см. Эти связанные статьи на MSDN: