C# 設置 dateTimePicker控件初始值為空(轉)


寫在前面:在.net中讓DateTimePicker顯示一個空的時間值,也許是很容易的事情,但事實上,也不是很容易的,至少,沒有經過努力的修改和重畫

,你是達不到的。在修改這個控件的時候,你又常常發現會有bug。下面介紹一個方法,至少源作者是經過研究的,沒有發現多少問題。

源網址
http://www.codeproject.com/KB/selection/Nullable_DateTimePicker.aspx
你可以在上述的網址找到源代碼和英文的說明。

效果圖
下圖中,你只要按一下Delete鍵就可以將DateTimePicker的值設置為空,實際的值是DateTime.MinValue,這一個簡單的效果,也許是很多程序員想看到。不過學習一下這個控件。

源代碼
最重要的兩個重載方法是下面倆。
protected override void OnCloseUp(EventArgs eventargs)
protected override void OnKeyDown(KeyEventArgs e)
DateTimePicker本身是支持自定義格式的,DateTimePickerFormat.Custom,就是聲明使用自定義格式的。
  public new DateTime Value
  {
   get
   {
    if (bIsNull)
     return DateTime.MinValue;
    else
     return base.Value;
   }
   set
   {
    if (value == DateTime.MinValue)
    {
     if (bIsNull == false)
     {
      oldFormat = this.Format;
      oldCustomFormat = this.CustomFormat;
      bIsNull = true;
     }

     this.Format = DateTimePickerFormat.Custom;
     this.CustomFormat = " ";
    }
    else
    {
     if (bIsNull)
     {
      this.Format = oldFormat;
      this.CustomFormat = oldCustomFormat;
      bIsNull = false;
     }
     base.Value = value;
    }
   }
  }

出處:小作坊網ChakMan

 

 

C#日期控件datetimepicker保存空值方法

 

方法一(推薦):

設置datetimepicker的屬性ShowCheckBox為true

在窗口初始化時候,添加代碼this.datetimepicker1.Checked = false;

保存日期值入庫的時候,就可以根據if(this.datetimepicker1.Checked ==false),保存空值。

方法二:

在窗口初始化函數中添加:
this.dateTimePicker1.Format=DateTimePickerFormat.Custom;
this.dateTimePicker1.CustomFormat="   ";
在日期改變事件里寫:
private void dateTimePicker1_ValueChanged(object sender, System.EventArgs e)
{
this.dateTimePicker1.Format=DateTimePickerFormat.Long;
this.dateTimePicker1.CustomFormat=null;
}
這樣就實現了,在程序初始化時dateTimePicker顯示為空

但是,這種寫法有個問題,保存入庫的時候,還要加一個判斷if(this.dateTimePicker1.Text.toString()==""),保存空值;else 保存this.dateTimePicker1.value。

這種寫法遇到個bug,一直沒有解決,就是日期控件默認是空的,在第一次選擇一個日期后必須失去焦點才能選擇新的日期,不知道什么原因?

方法三:

在日期控件上面覆蓋一個文本框,然后初始化時候文本框是空值,每次日期選擇之后將值附在文本框里面。

 

轉自:https://www.cnblogs.com/emanlee/archive/2009/07/26/1531308.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM