Settings.cs 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. using System.Configuration;
  2. using System.IO;
  3. namespace PDF_Office.Properties {
  4. // 通过此类可以处理设置类的特定事件:
  5. // 在更改某个设置的值之前将引发 SettingChanging 事件。
  6. // 在更改某个设置的值之后将引发 PropertyChanged 事件。
  7. // 在加载设置值之后将引发 SettingsLoaded 事件。
  8. // 在保存设置值之前将引发 SettingsSaving 事件。
  9. internal sealed partial class Settings {
  10. public Settings() {
  11. // // 若要为保存和更改设置添加事件处理程序,请取消注释下列行:
  12. //
  13. // this.SettingChanging += this.SettingChangingEventHandler;
  14. //
  15. this.SettingsSaving += this.SettingsSavingEventHandler;
  16. //
  17. }
  18. private void SettingChangingEventHandler(object sender, System.Configuration.SettingChangingEventArgs e) {
  19. // 在此处添加用于处理 SettingChangingEvent 事件的代码。
  20. }
  21. private void SettingsSavingEventHandler(object sender, System.ComponentModel.CancelEventArgs e) {
  22. // 在此处添加用于处理 SettingsSaving 事件的代码。
  23. try
  24. {
  25. //判断配置文件是否可写
  26. var filepath = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal).FilePath;
  27. if (isFileLocked(filepath))
  28. {
  29. e.Cancel = true;
  30. }
  31. }
  32. catch
  33. {
  34. }
  35. }
  36. /// <summary>
  37. /// 判断文件是否被占用
  38. /// </summary>
  39. /// <param name="pathName"></param>
  40. /// <returns></returns>
  41. public static bool isFileLocked(string pathName)
  42. {
  43. try
  44. {
  45. if (!File.Exists(pathName))
  46. {
  47. return false;
  48. }
  49. using (var fs = new FileStream(pathName, FileMode.Open, FileAccess.Read, FileShare.None))
  50. {
  51. fs.Close();
  52. }
  53. }
  54. catch
  55. {
  56. return true;
  57. }
  58. return false;
  59. }
  60. }
  61. }