【发布时间】:2014-02-02 05:33:43
【问题描述】:
大家好,我正在使用 FileSystemWatcher 检查 .ini 文件是否已更改。如果有,那么我希望我能够更新表单上的文本框。问题是它是一个共享函数,以便 FileSystemWatcher 工作,所以表单上的任何内容似乎都无法在该共享函数内访问?
我的代码:
Private Sub frmCamera_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim watcher As New FileSystemWatcher()
watcher.Path = Application.StartupPath
watcher.NotifyFilter = (NotifyFilters.LastAccess Or NotifyFilters.LastWrite Or NotifyFilters.FileName Or NotifyFilters.DirectoryName)
watcher.Filter = "*.ini"
watcher.SynchronizingObject = Me
AddHandler watcher.Changed, AddressOf OnChanged
watcher.EnableRaisingEvents = True
End Sub
Private Shared Sub OnChanged(source As Object, e As FileSystemEventArgs)
Dim sb1 As New StringBuilder(500)
Dim theButtonsName As String = ""
GetPrivateProfileString("camera", "val1", "", sb1, sb1.Capacity, Application.StartupPath & "\savedData.ini")
main.GetPrivateProfileString("camera", "val1", "", sb1, sb1.Capacity, Application.StartupPath & "\savedData.ini")
Dim frm As frmCamera = DirectCast(DirectCast(source, FileSystemWatcher).SynchronizingObject, frmCamera)
frm.TextBox1.Text = "debug: " & sb1.ToString
End Sub
我通过主表单调用上面的表单,如下所示:
Public Sub doStuff(ByVal what2Do As String)
If Trim(lanSent(0)) = "camera" And Trim(lanSent(1)) = "show" Then
theCam = New Threading.Thread(AddressOf ShowCam)
theCam.SetApartmentState(Threading.ApartmentState.STA)
theCam.Start()
Else
.....
End If
End Sub
Private Shared Sub ShowCam()
Dim ShowCam As New frmCamera
ShowCam.ShowDialog()
End Sub
我想要完成的是,一旦它看到文本框在其中输入(TextBox1_TextChanged),就运行一些其他的东西。
任何帮助都会很好地解决我的这个问题!谢谢!
【问题讨论】:
标签: vb.net onchange shared filesystemwatcher