VB 2010 de "variable" n'est pas déclaré. Il peut être inaccessible en raison de son niveau de protection
je suis en quelque sorte un n00b de VB et je me demandais comment faire une variable disponible dans plusieurs sous-marins. C'est juste une application de test pour vous familiariser avec VB.
Mon Code:
Public Class Sentences
Private Sub SentenceBox_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SentenceBox.TextChanged
If Me.Text = Trim(Sentence) Then
MsgBox("Good job!")
Main_Menu.Show()
Me.Close()
End If
End Sub
Private Sub ABCs_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim random As Integer = CInt((Rnd() * 10) + 1)
Dim Sentence As String
Select Case random
Case 1
Sentence = "The quick brown fox jumped over the lazy dog!"
Case 2
Sentence = "Hi there, how are you doing?"
Case 3
Sentence = "What is the answer to life?"
Case 4
Sentence = "The cat in the hat was fat."
Case 5
Sentence = "John and Sam had always been fat."
Case 6
Sentence = "The snow is falling hard."
Case 7
Sentence = "Here, dinner is always served nightly."
Case 8
Sentence = "The dog barks at the passing cars."
Case 9
Sentence = "The dust settles on the books."
Case 10
Sentence = "Fire burns brightly when you add kerosene."
End Select
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
SentenceBox.Text = Sentence
End Sub
End Class
Mon erreur est:
Les"phrases" n'est pas déclaré. Il peut être accessible en raison de son niveau de protection."
Je ne pense pas que vous avez publié sur le code qui produit réellement ce message d'erreur.
OriginalL'auteur benj | 2010-11-27
Vous devez vous connecter pour publier un commentaire.
Variables dans VB.NET avoir une très particulier portée, la limitation de leur disponibilité pour les différentes parties de votre code en fonction de comment et où elles sont déclarées.
Votre
Sentence
variable de niveau procédure étendue, ce qui signifie qu'il est disponible uniquement dans la procédure dans laquelle elle a été déclarée. Dans votre cas, il est déclaré dans leABCs_Load
méthode ("Sous"), de sorte qu'il ne sera disponible que pour le code à l'intérieur de cette méthode.Si, au lieu de cela, vous voulez être en mesure d'accéder à la
Sentence
variable dans tout des méthodes de votre classe (Forms
sont toujours classes dans VB.NET), vous pouvez déclarer la variable étendue au niveau du Module. Pour ce faire, vous devez ajouter un domaine privé à votreSentences
classe, à l'extérieur d'une méthode particulière (Sub ou la Fonction). Cette déclaration va ressembler à quelque chose comme ceci:Bien sûr, vous pouvez également déclarer la variable comme
Public
au lieu dePrivate
, qui mettra à la disposition des autres classes à l'extérieur de la classe en cours. Par exemple, si vous avez eu une deuxième forme que vous voulez être en mesure d'accéder au contenu de votreSentence
variable, vous pouvez le déclarer commePublic
dans la première classe du formulaire et ensuite y accéder à partir de l'une des méthodes de la deuxième de classe du formulaire comme suit:Avis que parce qu'il ne se trouvent dans une autre forme (un classe différente de celle qu'il est en cours d'accès), vous avez entièrement qualifier la référence à elle. C'est comme la façon dont votre famille peut vous appeler "Mike", mais d'autres ont de vous appeler "Mike Jones" pour vous différencier de "Mike Smith."
Pour en savoir plus, voir aussi ces articles connexes sur MSDN:
OriginalL'auteur Cody Gray
Vous devez mettre :
Publique de la Classe des Phrases
Lisez ceci pour en savoir plus : http://msdn.microsoft.com/en-us/library/43s90322%28v=VS.80%29.aspx
OriginalL'auteur AFract
Déplacer la ligne
Dim Sentence As String
de ABCs_Load immédiatement aprèsPublic Class Sentences
.Cela rendra la variable Phrase à la disposition de tous les sous-marins et des fonctions dans la classe des Phrases.
OriginalL'auteur xpda
Si vous obtenez ce pour chaque webcontrol sur la page puis Cliquez droit sur le projet ou d'un dossier avec l'erreur et 'Convertir en WebApplication' d'auto produire son concepteur.vb fichiers (à l'endroit où elles sont déclarées dans une classe partielle avec le même nom).
OriginalL'auteur hagensoft
Mettre cela en vertu de la "Classe Publique Phrases":
Et de supprimer la déclaration de la ABCs_Load portée.
OriginalL'auteur RobinJ