Пример #1
0
        //停止一个监视
        private void StopWatch(object sender, EventArgs e)
        {
            XWXFileSystemWatcher watcher = GetSelectedWatcher(true, "请选择需要停止的监视项");

            if (watcher != null)
            {
                watcher.StopWatch();
                //一旦停止监视,就将监视动作列表冻结,以免在停止监视时改变了监视动作。
                dgrdTaskList.SelectedRows[0].Cells[IDX_CHANGETYPE].ReadOnly = true;
                dgrdTaskList.SelectedRows[0].Cells[IDX_SUBDIR].ReadOnly     = true;
                //当停止一个监视后触发OnWatchSettingChanged事件以便进行实时保存
                this.OnWatchSettingChanged();
            }
        }
Пример #2
0
        //移除一个监视
        private void RemoveWatch(object sender, EventArgs e)
        {
            XWXFileSystemWatcher watcher = GetSelectedWatcher(true, "请选择需要移除的监视项");

            if (watcher != null)
            {
                if (MessageBox.Show("删除该监视后不再会自动备份该目录文件,确定吗?", "正在删除监视", MessageBoxButtons.OKCancel) == DialogResult.OK)
                {
                    watcher.StopWatch();
                    watcherList.Remove(watcher);
                    dgrdTaskList.Rows.Remove(dgrdTaskList.SelectedRows[0]);
                    //当删除一个监视后触发OnWatchSettingChanged事件以便进行实时保存
                    this.OnWatchSettingChanged();
                }
            }
        }
Пример #3
0
        //从一个WatchInfo载入一个监视项到界面中,并重现该WatchInfo的信息
        private void AddWatchItem(WatchInfo watch)
        {
            XWXFileSystemWatcher watcher = new XWXFileSystemWatcher(watch.WatchedFolder);

            watcher.BackupFolder = watch.BackupFolder;
            watcher.NotifyFilter = NotifyFilters.Security
                                   | NotifyFilters.LastWrite
                                   | NotifyFilters.FileName
                                   | NotifyFilters.DirectoryName
                                   | NotifyFilters.Size
                                   | NotifyFilters.Attributes | NotifyFilters.CreationTime;

            watcher.OnWatchStatusChanged += new WatchStatusChangedHandler(watcher_OnWatchStatusChanged);

            //目前版本不监视删除和重命名操作
            //watcher.Deleted += new FileSystemEventHandler(watcher_Deleted);
            //watcher.Renamed += new RenamedEventHandler(watcher_Renamed);
            if ((watch.ChangeTypes & WatcherChangeTypes.Renamed) == WatcherChangeTypes.Renamed)
            {
                watcher.Renamed            += new RenamedEventHandler(watcher_Renamed);
                watcher.WatchingChangeTypes = (watcher.WatchingChangeTypes | WatcherChangeTypes.Renamed);
            }
            if ((watch.ChangeTypes & WatcherChangeTypes.Created) == WatcherChangeTypes.Created)
            {
                watcher.Created            += new FileSystemEventHandler(watcher_Created);
                watcher.WatchingChangeTypes = (watcher.WatchingChangeTypes | WatcherChangeTypes.Created);
            }
            if ((watch.ChangeTypes & WatcherChangeTypes.Changed) == WatcherChangeTypes.Changed)
            {
                watcher.Changed            += new FileSystemEventHandler(watcher_Changed);
                watcher.WatchingChangeTypes = (watcher.WatchingChangeTypes | WatcherChangeTypes.Changed);
            }

            int rowIndex = dgrdTaskList.Rows.Add();

            dgrdTaskList.Rows[rowIndex].Cells[IDX_WATCHINGDIR].Value = watcher.Path;
            dgrdTaskList.Rows[rowIndex].Cells[IDX_BACKUPDIR].Value   = watcher.BackupFolder;
            dgrdTaskList.Rows[rowIndex].Cells[IDX_STATUS].Value      = GetWatchingStatusName(watcher.EnableRaisingEvents);
            dgrdTaskList.Rows[rowIndex].Tag = watcher;

            DataGridViewComboBoxCell cell = dgrdTaskList[IDX_CHANGETYPE, rowIndex] as DataGridViewComboBoxCell;

            cell.Items.Add("创建、修改及重命名");
            cell.Items.Add("仅创建");
            cell.Items.Add("仅修改");
            cell.Items.Add("仅重命名");
            if (watch.ChangeTypes == WatcherChangeTypes.Changed)
            {
                cell.Value = "仅修改";
            }
            else if (watch.ChangeTypes == WatcherChangeTypes.Created)
            {
                cell.Value = "仅创建";
            }
            else if (watch.ChangeTypes == WatcherChangeTypes.Renamed)
            {
                cell.Value = "仅重命名";
            }
            else
            {
                cell.Value = "创建、修改及重命名";
            }
            cell.ReadOnly = !watch.Enable;

            DataGridViewCheckBoxCell checkbox = dgrdTaskList.Rows[rowIndex].Cells[IDX_SUBDIR] as DataGridViewCheckBoxCell;

            if (checkbox != null)
            {
                checkbox.Value = watch.IncludeSubdirectories;
            }
            dgrdTaskList.Rows[rowIndex].Cells[IDX_SUBDIR].ReadOnly = !watch.Enable;

            if (watch.Enable)
            {
                watcher.StartWatch();
            }
            else
            {
                watcher.StopWatch();
            }

            //同时将该监视项添加到watcherList中
            watcherList.Add(watcher);
        }