如何讓 DevExpress 的 DateEdit 控件正確顯示日期的周名
2024-07-21 02:16:06
供稿:網友
 
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() 就可以了。
菜鳥學堂: