devexpress 的控件相当好看而且很好用,但 dateedit 在是显示周名时,只能显示一个“星”字。
以下是解决方法,此解决方法不需修改其源码,所以免去了重新编译的必要,可直接使用其发布的标准dll。
  public class mydateedit : devexpress.xtraeditors.dateedit
  {
   protected override devexpress.xtraeditors.popup.popupbaseform createpopupform() 
   {
    return new mypopupdateeditform(this);
   }
  }
  public class mypopupdateeditform : devexpress.xtraeditors.popup.popupdateeditform
  {
   public mypopupdateeditform(mydateedit dateedit) : base(dateedit)
   {
   }
   protected override devexpress.xtraeditors.controls.dateeditcalendar createcalendar()
   {
    return new mydateeditcalendar(owneredit.properties, owneredit.editvalue);
   }
}
  public class mydateeditcalendar : devexpress.xtraeditors.controls.dateeditcalendar
  {
   public mydateeditcalendar(
    devexpress.xtraeditors.repository.repositoryitemdateedit item,
    object editdate) : base (item, editdate)
   {
   }
   protected override devexpress.xtraeditors.viewinfo.dateeditinfoargs createinfoargs()
   {
    devexpress.xtraeditors.viewinfo.dateeditinfoargs info = base.createinfoargs ();
    system.globalization.datetimeformatinfo newformat = 
     (system.globalization.datetimeformatinfo)info.dateformat.clone();
    // 以下是重新设置日期的周名称。
    // 缺省情况下,前面带有“星期”两字,也正是因为如此才导致所谓的错误。
    // 注意,当前实现未处理语言环境,仅适用于中文环境。 
    newformat.abbreviateddaynames = new string[]{
                "日",
                "一",
                "二",
                "三",
                "四",
                "五",
                "六"};
info.dateformat = newformat;
    return info;
   }
}
使用时,只需 mydateedit dateedit1 = new mydateedit() 就可以了。
新闻热点
疑难解答