2012-03-26 46 views
1

我在C#中制作了一个简单的winforms应用程序,其中VS2010。我的winforms设计包含一个FileSystemWatcher,它在创建文件时触发一堆代码。在FileSystemWatcher中为“Path”属性使用预定义的字符串

我的问题是FileSystemWatcher的路径需要在程序运行之前定义,因为它不总是相同的。

我有一个名为startPath我想使用的字符串,但它会出现,我不能只是这个在我的设计FileSystemWatcher属性添加到“路径”字段中。

如果我编辑了我的form1.designer.cs,我能够使它工作,但是我很快学会了即使编辑了窗体的不同组件也会重新生成代码!

正如你可能已经猜到了,我仍然非常多学习C#.net(大约一个星期),而我从来没有经历过!如果我错过了一些愚蠢的东西,请指出来!

+0

2个字:应用程序设置。 – leppie 2012-03-26 09:31:06

回答

0

FileSystemWatcher具有一个路径属性,可用于在FileSystemWatcher对象初始化后更改路径。否则,如果使用构造函数设置要观察的路径,则必须重新设置观察器。

FileSystemWatcher.Path Property

存储路径本身可以通过应用程序设置可以轻松完成由@leppie

参考的设置中提到:
Application Settings Overview
Using Settings in C#
Saving User Settings in Winform Application

+0

阅读您关于FileSystemWatcher.Path的链接是真正帮助我的。 – Rich 2012-03-27 09:43:28

-1

添加所需的路径,你的app.config文件的appSettings部分:

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <appSettings> 
    <add key="watcherPath" value="\\myPC\myShare\myFolder\" /> 
    </appSettings> 
</configuration> 

然后你可以从你的代码中访问该值,并将其分配给FileWatcher路径:

string myPath = System.Configuration.ConfigurationManager.AppSettings["watcherPath"]; 
FileSystemWatcher fsw = new FileSystemWatcher(myPath); 
+0

正确的路径,错误的方式... – leppie 2012-03-26 09:35:49

+0

定义我的路径并不是真正的问题,它找到一种方法确保用户定义的路径实际上在运行时被“分配”到我的FileSystemWatcher。你的方式没有考虑到我的FileSystemWatcher是在自动生成的“form1.designer.cs”文件中初始化的。 (除非我错过了一些东西!) – Rich 2012-03-27 09:41:22

0

我指派我用户定义的字符串作为运行时的路径,如下所示:

在我Form1.cs中:

protected override void OnActivated(EventArgs e) 
    { 
     base.OnActivated(e); 
      fileSystemWatcher1.Path = inputPath; 
    } 

认为这是做的一个确定的方式(这似乎是工作!),字符串“inputPath”是通过获取相应的设置前面定义从我的配置文件中。如果我放置settings.cs,它似乎不想玩得很好。