using System.Text;
private StringBuilder sbTitle = new StringBuilder("窗口标题为闪烁效果! ");
private FileSystemWatcher fileWatcher = new FileSystemWatcher();
fileWatcher.Path = currentFile.DirectoryName; // 监视目录。
fileWatcher.Filter = currentFile.Name; // 监视文件。
fileWatcher.EnableRaisingEvents = true; // 启用监视。
this.fileWatcher.IncludeSubdirectories = true;
this.fileWatcher.NotifyFilter = System.IO.NotifyFilters.FileName | System.IO.NotifyFilters.DirectoryName | System.IO.NotifyFilters.Attributes | System.IO.NotifyFilters.LastWrite;
this.fileWatcher.SynchronizingObject = this;
this.fileWatcher.Renamed += new System.IO.RenamedEventHandler(this.fileWatcher_Renamed);
this.fileWatcher.Deleted += new System.IO.FileSystemEventHandler(this.fileWatcher_Deleted);
this.fileWatcher.Changed += new System.IO.FileSystemEventHandler(this.fileWatcher_Changed);
#region FileSystemWatcher
private void fileWatcher_Changed(object sender, FileSystemEventArgs e)
{
currentFile.Refresh();
sbTitle.Remove(0, sbTitle.Length);
sbTitle.Append(e.Name);
if (currentFile.IsReadOnly)
sbTitle.Append(" 只读");
if ((currentFile.Attributes & FileAttributes.Hidden) != 0) // 取交集。
sbTitle.Append(" 隐藏");
sbTitle.Capacity = sbTitle.Append(" ").Length;
this.Text = null;
attributesMenu.Enabled = true;
}
private void fileWatcher_Renamed(object sender, RenamedEventArgs e)
{
currentFile = new FileInfo(e.FullPath);
sbTitle.Remove(0, sbTitle.Length);
sbTitle.Append(e.Name);
if (currentFile.IsReadOnly)
sbTitle.Append(" 只读");
if ((currentFile.Attributes & FileAttributes.Hidden) != 0) // 取交集。
sbTitle.Append(" 隐藏");
sbTitle.Capacity = sbTitle.Append(" ").Length;
this.Text = null;
this.Icon = Icon.ExtractAssociatedIcon(e.FullPath);
fileWatcher.Filter = e.Name; // 监视重命名的文件。
}
private void fileWatcher_Deleted(object sender, FileSystemEventArgs e)
{
currentFile.Refresh();
sbTitle.Remove(0, sbTitle.Length);
sbTitle.Append(e.Name);
sbTitle.Capacity = sbTitle.Append(" ").Length;
this.Text = null;
attributesMenu.Enabled = false;
}
#endregion