2008-11-12 38 views

Trả lời

5

Đây là một thú vị article on CodeProject. Tác giả đã ghi đè thuộc tính Giá trị để chấp nhận giá trị Null là DateTime.MinValue, trong khi vẫn duy trì việc xác thực MinValue và MaxValue của điều khiển tiêu chuẩn. Đó là tất cả để có nó.

+1

Có ông của Grazoli không thực hiện công việc mặc dù tôi nghĩ rằng ai đó nên xem lại nó và thử và thoát khỏi những WndProc xấu xí gọi – Calanus

+0

Điều khác về mã là nó dường như không làm những gì nó được cho là phải làm. Tôi không biết, có lẽ tôi đã làm sai điều gì đó. Không có nhiều thời gian để chi tiêu xung quanh với nó. Sử dụng ý tưởng của DTPs ShowCheckBox có vẻ hứa hẹn thực sự hơn. – IAbstract

+0

Trong khi giải pháp cho phép người dùng xóa ngày, bạn không thể đặt tiêu điểm cho điều khiển hoặc sử dụng bàn phím để nhập lại ngày không trống. Một bước fwd, hai trở lại. – ChadD

4

Đặt hộp kiểm bổ sung có gắn nhãn gì đó như "bật thông báo" cho phép/vô hiệu hóa DateTimePicker.

46

Bạn không cần phải sửa đổi nó để làm điều này.

DateTimePicker trong .net thực sự có hộp kiểm tích hợp sẵn.

Đặt thuộc tính ShowCheckBox thành true.

Sau đó, bạn có thể sử dụng thuộc tính Checked để xem liệu người dùng đã nhập một giá trị hay chưa.

http://msdn.microsoft.com/en-us/library/system.windows.forms.datetimepicker.showcheckbox(VS.80).aspx

+1

Việc thực hiện hộp kiểm là tất cả các loại thất bại mặc dù. Không kích hoạt sự kiện đúng cách. –

0

tôi gửi đường dài quanh giải pháp, trong đó có một số kết quả trong các ý kiến ​​mã về những vấn đề đặc biệt với kiểm soát này:

DateTime Picker null value

0

Thiết lập thuộc tính ShowCheckBox là true. Sau đó, bạn có thể sử dụng thuộc tính Checked như sau:

private void dateTimePicker1_ValueChanged(object sender, EventArgs e) 
     { 
      DateTimePicker thisDateTimePicker = (DateTimePicker)sender; 
      if (thisDateTimePicker.Checked == false) 
      { 
       thisDateTimePicker.CustomFormat = @" "; //space 
       thisDateTimePicker.Format = DateTimePickerFormat.Custom; 
      } 
      else 
      { 
       thisDateTimePicker.Format = DateTimePickerFormat.Short; 
      } 
     } 
NullableDateTimePicker
Các vấn đề liên quan