下のようなコーディングをしたのですが、TEXTBOXに反映されません。
色々調べて見たのですが、
Invoke(New SetFocusDelegate(AddressOf SetFocus))
Delegate
http://codezine.jp/a/article/aid/139.aspx#form
等調べてみましたがどうもエラーが出てしまいます
何か根本的に私のコードがおかしい気がします。
本来やりたいことは、あるファイルを監視して書き換えか新しく作られたら
ファイルを読み込んでその内容をテキストボックスに書き込みしたいのです。
まだ勉強中で足りないことが多いのでアドバイスをよろしく願います。
Shared Sub MainX()
Dim fileName As String = "C:\空売り1.txt" 'ファイルのパス
'System.IO.File.Delete(fileName)
Dim watcher As FileSystemWatcher = New FileSystemWatcher()
watcher.Path = "C:\"
watcher.Filter = "空売り1.txt"
watcher.IncludeSubdirectories = True
watcher.NotifyFilter = NotifyFilters.FileName
AddHandler watcher.Changed, AddressOf DoWork
AddHandler watcher.Created, AddressOf DoWork
watcher.EnableRaisingEvents = True
End Sub
Shared Sub DoWork(ByVal source As Object, ByVal e As FileSystemEventArgs)
Dim fd(5) As String
Dim st As Stream = Nothing
Dim maxCount As Integer = 10
Dim fileName As String = "C:\***.txt" 'ファイルのパス
Dim i As Integer
For i = 0 To maxCount - 1
Try
st = File.Open(e.FullPath, FileMode.Open, FileAccess.Read, FileShare.None)
If Not st Is Nothing Then
Exit For
End If
Catch ex As Exception
System.Threading.Thread.Sleep(300)
End Try
Next
If Not st Is Nothing Then
st.Close()
Dim fileNo As Integer = FreeFile()
'' ファイルを入力モードで開く()
FileOpen(fileNo, fileName, OpenMode.Input)
'' ファイルの最後までループ()
Input(fileNo, fd(0)) 'ファイルから読み込み
Input(fileNo, fd(1))
Input(fileNo, fd(2))
Input(fileNo, fd(3))
Input(fileNo, fd(4))
Form1.TextBox47.Text = fd(0)
Form1.TextBox3.Text = fd(1) : Form1.TextBox4.Text = fd(2)
Form1.TextBox5.Text = fd(3) : Form1.TextBox6.Text = fd(4)
Debug.Print(Form1.TextBox47.Text)
FileClose(fileNo) 'ファイルを閉じる
Form1.Timer2.Enabled = True
System.IO.File.Delete(fileName)
Else
' タイムアウト
End If
End Sub
FileSystemWatcherを使わない理由は何かあるんですか。
それ以前に、ここはVB2-VB6専用の掲示板ですが。
すみませんです。
よく見てなかったようです。
NET方へ書き直します、FileSystemWatcherは、イベントが、2回でてしまうので、こちらのほうが良いかなと判断しました。