首页 > 封装DateTimePicker并使用绑定时遇到的问题

封装DateTimePicker并使用绑定时遇到的问题

请教各位高手:

我想把一个控件封装起来.DateTimePicker

因为他的value的类型为DateTime所以不可以为Null

但是数据库里有一些日期是为空的.如离职日期

现在我写了一个类继承至DateTimePicker

使用public object Value覆盖了基类的Value方法

这样它就可以为NULL了.

在使用时.我使用的是绑定

private MDateTimePicker dtpQuotationDate;

this.dtpQuotationDate.DataBindings.Add("Value", this.bindingSource1, "QuotationDate");

但是他一直只使用我这个类Value的Set方法,不使用我这个类的Value的Get方法,还是调动Base.Value.不知道为什么啊 ,请各位高手指点.谢谢!

using System;

using System.Collections.Generic;

using System.Text;



using System.Windows.Forms;

using System.ComponentModel;

using System.Text.RegularExpressions;



namespace WinUI

{

    
/**//// 

    
/// 用于处理DBNull问题的DateTimePicker

    
/// 


    public class MDateTimePicker :DateTimePicker

    
{

        
private object dateValue;

        
public new string Text

        
{

            
get

            
{

                
return this.dateValue.ToString();

            }


            
set

            
{

                
this.dateValue = value;

            }


        }


        
public object Value

        
{

            
get

            
{

                
if (dateValue==null)

                
{

                    Format 
= DateTimePickerFormat.Custom; this.CustomFormat = " ";

                }


                
else

                
{

                    
this.Format = DateTimePickerFormat.Short;

                }


                
return dateValue;

            }


            
set

            
{

                dateValue 
= value;

                
base.Value = Convert.ToDateTime(value);

            }


        }


        
protected override void OnTextChanged(EventArgs e)

        
{

            
//base.OnTextChanged(e);

            
//if (Convert.ToDateTime(Value) == MaxDate)

            
//{

            
//    Format = DateTimePickerFormat.Custom;

            
//    CustomFormat = " ";

            
//}

            
//else

            
//{

            
//    Format = DateTimePickerFormat.Long;

            
//}

        }


        
protected override void OnClick(EventArgs e)

        
{

            
//base.OnClick(e);

            
//onEdit();

        }


        
protected override void OnKeyDown(KeyEventArgs e)

        
{

            
base.OnKeyDown(e);

            
if (e.KeyCode == Keys.Delete)

            
{

                
this.Value = null;

            }


            
else

            
{

                
//onEdit();

            }


        }


        
private void onEdit()

        
{

            Format 
= DateTimePickerFormat.Long;

            Value 
= DateTime.Now;

        }


        

    }


}






 



转载于:https://www.cnblogs.com/tonyepaper/archive/2008/05/19/1202308.html

更多相关:

  •  翻页器

  •     在src/main/resources/springmvc-servlet.xml中加入

  • 本篇仅仅是一个记录 MergeOperator 的使用方式。 Rocksdb 使用MergeOperator 来代替Update 场景中的读改写操作,即用户的一个Update 操作需要调用rocksdb的 Get + Put 接口才能完成。 而这种情况下会引入一些额外的读写放大,对于支持SQL这种update 频繁的场景来说实在是不划...

  • 看了很多人写的好几个去重方法,我在这里精简组合下,适用于已排序与未排序的数组。 废话不多说,上代码。 数组去重