/// <summary> /// 消除状态栏上的文字 /// </summary> public static void ClearText() { if (StatusBarObject != null) { StatusBarObject.Clear(); } }
/// <summary> /// 在状态栏上显示文字 /// </summary> /// <param name="msg"></param> public static void SetText(string msg) { if (StatusBarObject != null && !string.IsNullOrEmpty(msg)) { StatusBarObject.SetText(msg); } }
/// <summary> /// 停止进度条滚动 /// </summary> public static void StopProcessBar() { if (StatusBarObject != null) { StatusBarObject.Progress(ref processBarCookie, 0, "", 0, 0); processBarCookie = 0; } }
/// <summary> /// 显示进度条 /// </summary> /// <param name="leftCornerText">左下角需要显示的文字</param> /// <param name="value">进度条的当前值,不超过最大值</param> public static void ShowProcessBar(string leftCornerText, uint value) { if (StatusBarObject != null) { lastValue = value; if (value <= MaxValue) { StatusBarObject.Progress(ref processBarCookie, 1, leftCornerText, value, MaxValue); } else { StatusBarObject.Progress(ref processBarCookie, 0, "", 0, 0); } } }
//状态栏显示处理函数 private void _updateStatusBarFunc(object _obj) { if (this.InvokeRequired) { UpdateStatusBar _updateStatusBar = new UpdateStatusBar(_updateStatusBarFunc); this.Invoke(_updateStatusBar, new object[] { _obj }); } else { StatusBarObject obj = _obj as StatusBarObject; if (obj.time == 0) { toolStripStatusLabel1.Text = ""; } else if (obj.time < 5) { toolStripStatusLabel1.Text = (obj.time % 2 == 1) ? _statusBarTmpText : ""; } else { toolStripStatusLabel1.Text = _statusBarTmpText; } } }
//开启磁盘监视和状态栏线程 private void startThread() { #region thread_for_watchDevices watchDevicesChangesThread = new Thread(new ThreadStart(() => { while (true) { Thread.Sleep(500); if (closeForm) { break; } DriveInfo[] dis = DriveInfo.GetDrives(); HashSet <string> _tmp = new HashSet <string>(); List <string> _diff_drv = new List <string>(); List <string> _find_files = new List <string>(); foreach (var di in dis)//获取当前所有盘符 { _tmp.Add(di.Name); } foreach (var item in _tmp)//与之前盘符比较,如果有之前不存在的盘符,则包装进行后期访问 { if (!_drvs.Contains(item)) { _diff_drv.Add(item); } } if (_diff_drv.Count > 0)//这里进行对不同的驱动器进行处理 { foreach (var item in _diff_drv) { try { foreach (var file in Directory.EnumerateFiles(item, "r*.txt")) { _find_files.Add(file); } } catch (IOException) { Console.WriteLine("Exception on EnumerateFiles:" + item); } } } if (_drvs.Count != _tmp.Count)//如果比较后相同就不进行赋值操作 ,最拙劣的判断是否变化方法 { _updateFromFileListFunc(_find_files); _drvs = _tmp; } } })); watchDevicesChangesThread.Start(); #endregion #region thread_for_change_statusbar_status resetStatusTextThread = new Thread(new ThreadStart(() => { StatusBarObject sbo = new StatusBarObject(); while (true) { if (closeForm) { break; } Thread.Sleep(FLASH_TIME_INTERVAL); if (_isStatusNeedFlash)//如果状态栏需要闪动 { sbo.time++; _updateStatusBarFunc(sbo); if (sbo.time > 9) { _isStatusNeedFlash = false; sbo.time = 0; _updateStatusBarFunc(sbo); } } } })); resetStatusTextThread.Start(); #endregion }
public static void CancelProcessBar() { StatusBarObject.Progress(ref processBarCookie, 0, "", 0, 0); }