Me is unknown

  • Thread starter Thread starter Guest
  • Start date Start date
G

Guest

Hello,
I have only one form with a listbox:lbFileContent, and I have this code in
Public Class Form1.

Public Shared Sub UploadFile(ByVal fileNamePath As String)
Dim reader As StreamReader = New StreamReader(fileNamePath)

Try
Me.lbFileContent.Items.Clear()
Do
Me.lbFileContent.Items.Add(reader.ReadLine)
Loop Until reader.Peek = -1

Catch
Me.lbFileContent.Items.Add("File is empty")

Finally
reader.Close()
End Try
End Sub

It seems Me is not defined there. What should I do here?
Thanks,
Jim.
 
The sub is Shared. Meaning, it is NOT an instance method. However, your
listbox is an instance member of the class - i.e. you have to have an
instance of the form, to have an instance of the listbox.

Shared methods cannot work with instance members of the class, because they
do not execute as part of an instance. Remove the 'Shared' keyword.
 
Hi Marina
I am actually using the following code from MS help and I am calling the
function UploadFile in OnChanged function. If I remove shared it gives me the
following message.

“ Cannot refer to an instance member of a class from within a shared method
or shared member initializer without an explicit instance of the class.â€

Is it secure to remove all shared in all functions?

Thanks,
Jim.



Public Class Watcher

Public Shared Sub Main()
Dim args() As String = System.Environment.GetCommandLineArgs()
' If a directory is not specified, exit the program.
If args.Length <> 2 Then
' Display the proper way to call the program.
Console.WriteLine("Usage: Watcher.exe (directory)")
Return
End If

' Create a new FileSystemWatcher and set its properties.
Dim watcher As New FileSystemWatcher()
watcher.Path = args(1)
' Watch for changes in LastAccess and LastWrite times, and
' the renaming of files or directories.
watcher.NotifyFilter = (NotifyFilters.LastAccess Or
NotifyFilters.LastWrite Or NotifyFilters.FileName Or
NotifyFilters.DirectoryName)
' Only watch text files.
watcher.Filter = "*.txt"

' Add event handlers.
AddHandler watcher.Changed, AddressOf OnChanged
AddHandler watcher.Created, AddressOf OnChanged
AddHandler watcher.Deleted, AddressOf OnChanged
AddHandler watcher.Renamed, AddressOf OnRenamed

' Begin watching.
watcher.EnableRaisingEvents = True

' Wait for the user to quit the program.
Console.WriteLine("Press 'q' to quit the sample.")
While Chr(Console.Read()) <> "q"c
End While
End Sub

' Define the event handlers.
Private Shared Sub OnChanged(source As Object, e As FileSystemEventArgs)
' Specify what is done when a file is changed, created, or deleted.
Console.WriteLine("File: " & e.FullPath & " " & e.ChangeType)

' upload file
UploadFile(e.FullPath)

End Sub

Private Shared Sub OnRenamed(source As Object, e As RenamedEventArgs)
' Specify what is done when a file is renamed.
Console.WriteLine("File: {0} renamed to {1}", e.OldFullPath,
e.FullPath)
End Sub

End Class
 
You can't call instance methods from shared subs, just like you can't access
instance variables from shared sub.

So this means you have to make the sub that calls UploadFile an instance
method, etc. This may have other reprecussions, as I don't know your code
or what you are doing exactly. It sounds though, like you should read up on
shared vs. instance methods and variables to get a clear understanding of
what each one is for.
 
Back
Top