12

使用log4net,没有日志文件生成

log4net主页:Apache log4net: Home

上周刚学习了下用法,参考Apache log4net Manual: Configuration一步步配置下来,运行正常。

然后我把配置写到app.config中,并把.exe和需要的.dll拷到其他目录中,一运行发现没有日志文件生成。今天重新看了一遍Apache log4net Manual: Configuration,突然发现工程编译后还产生了一个.exe.config的文件。里面就是原先app.config中的内容,连同该文件一同拷贝到另外目录就可以正常运行了。

配置如下:

AssemblyInfo.cs:

App.config:

Program.cs

【END】

12

备份博客的重要性

博客挂在主机91上,差不多6月10号的样子主机发生故障。

这几天打开网页一直显示“无法连接数据库”。直到今天问了客服才知道原因:磁盘阵列卡报错,向硬盘写入垃圾数据,导致操作系统、文件系统和用户文件出现不同程度不可逆转的损坏。电话是一直打不通的,反馈了问题也没有收到回复。

排队等待技术人员帮我恢复,吃完饭回来终于恢复完。最新一次备份是4月份的,之后写的博文已找不回来。

平时比较懒,不经常备份,遇到此事,很是后悔。数据信息需要经常备份。

============================================================================

Update:

通过百度快照给找回来了。

【END】

09

User Settings in WPF

介绍参看:How To: Write User Settings at Run Time with C#
  1. 应用程序范围的设置无法在运行时更改;
  2. 用户范围的设置可以在运行时更改。

对于一个用户范围的值 [Length]-[ulong]-[User]-[0] 的操作

读取值:

设置并保存值:

在应用程序退出时保存:

使用user-scope的设置会保存在系统用户目录下,比如:

【END】

07

模拟MessageBox

这段时间在用WPF开发项目。界面采用的是类似Win8系统的Metro风格,但是系统自带MessageBox貌似不能被Style,于是重写MessageBox。

之前一直没有写过自定义控件,就不知道怎么下手。于是从网上找了好些资料,发现了这篇博文《WPF 自定义 MessageBox (相对完善版)》。看了代码解释并运行了Demo,觉得根据实际需要改造下应该可以用到项目里来。

以前一直很好奇为什么能Style很多控件,而MessageBox却不能Style,查过.NET Reflector,发现:

MessageBox类 是直接继承自Object类,实际上是对具体细节进行了封装。

总体结构建立在Vito.K的代码基础之上,我加入的一些功能:

  1. 关闭按钮:
    在MessageBoxModule中定义关闭命令的依赖项属性: 


    设置方法:

    在public MessageBoxModule()方法中调用即可。
    在MessageBoxModule的Style文件中对该命令的使用:
  2. 通过标题栏拖动MessageBox:
    之前写过的无边框的Windows窗体都是通过Rectangle的MouseLeftButtonDown事件来触发拖动窗体的,然后这个方法在这边行不通,于是又用这方法,还是行不通: 

    无意间看到《WPF编程宝典 C# 2010版》第18章中的无外观控件代码中的TemplatePart。照猫画虎地写下了以下代码:
    在Style文件中:

    在MessageBoxModule类中:
    在类前面加上:

    重载public void OnApplyTemplate()方法:
  3. 显示详细信息:
    主要是Style中几个相关控件的Visibility的设置,依据是MessageBoxModule类中的指定值,即DependencyProperty MessageDetailProperty是否为空来选择是否启用显示相信信息功能: 
  4. 加入MessageBoxImage:
    通过MessageBoxModule类中的DependencyProperty MessageBoxIconTypeProperty来指定显示哪种类型的图片: 

    MessageBoxIcon是枚举类型类似于MessageBoxImage的一个枚举类型:

    在Style文件中:

    用ControlTemplate.Triggers进行控制对应Image的Visibility属性:

    【END】