【问题标题】:handing the OnCreated event of FileSystemWatcher处理 FileSystemWatcher 的 OnCreated 事件
【发布时间】:2013-09-24 15:20:47
【问题描述】:

我实现了FileSystemWatcher的这个事件:

Private Shared Sub OnCreated(source As Object, e As FileSystemEventArgs)
    If e.Name.ToUpper() == "MYTEXTFILE.TXT" then
        ' code '
    End If
End Sub

有没有办法监控创建的文件是否在类似的文本框中?

Private Shared Sub OnCreated(source As Object, e As FileSystemEventArgs)
    If e.Name.ToUpper.contains(textbox1.text) then
          ' code '
End Sub

【问题讨论】:

  • 文本框只包含一个文件还是多个文件?如果您有多个文件,它们是如何相互分离的?
  • 文件比较多,每个都在下一行。

标签: vb.net filesystemwatcher


【解决方案1】:

在多行文本框中有多个文件并且每个文件名都在单独的行中要求您应该单独拆分文件名,然后使用刚刚创建的文件检查每个文件名。

Private Shared Sub OnCreated(source As Object, e As FileSystemEventArgs)

    ' Get an array of the files at each line and remove eventually spurious empty lines
    Dim files() = textbox1.Text.Split(New String() {Environment.NewLine}, _
                                      StringSplitOptions.RemoveEmptyEntries)
    Dim newFile = e.Name.ToUpper()
    for each file in files
        if file.ToUpper() = newFile Then
            ' code '
            Exit For
        End If
    Next
End Sub

【讨论】:

  • 谢谢,我用dim newfile as string = e.name.touppper() 替换了string newfile = e.name.toupper() ,它就像一个魅力。
  • 是的,对不起,我现在想到了C#(顺便说一句,写Dim newfile = e.Name.ToUpper()就足够了,编译器很聪明,可以推断出你正在使用字符串)
【解决方案2】:

我不是 100% 清楚我理解你的问题,但我假设你想将刚刚创建的文件名与文本框中的文件名进行比较。

1) 文本框中的文本也是大写的吗?在比较之前,我看到您将文件名大写。

2) 文本框中的文本是否“包含”在文件名中,也许反过来?

3) 条件应该是 .Equal 而不是 .Contains?

【讨论】:

  • 我使用了equal,但它不起作用。文本框中的文本是小写的,线程上的一个只是示例。
  • 而且,我不能使用 equal,因为它会比较整个文本框文本,包含是要走的路。
  • 我看到你的代码在 VB 中,但在 C# 中它不会编译,因为方法“.contains”应该已经大写。这可能是你的问题吗?
  • 不。我什么都试过了,所以我认为我缺少部分代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多