title: how to set datetimepicker with null value if date not selected(c# winforms)
body: <pre><code>Binding b = new Binding( "Value", person, "BdayNullable", true );
  dtBirthdayNullable.DataBindings.Add( b );
  b.Format += new ConvertEventHandler( dtBirthdayNullable_Format );
  
  b.Parse += new ConvertEventHandler( dtBirthdayNullable_Parse );
  
  void dtBirthdayNullable_Format( object sender, ConvertEventArgs e )
  {
      // e.Value is the object value, we format it to be what we want to show up in the control
  
      Binding b = sender as Binding;
      if ( b != null )
      {
          DateTimePicker dtp = (b.Control as DateTimePicker);
          if ( dtp != null )
          {
              if ( e.Value == DBvalue.value )
              {
                  dtp.ShowCheckBox = true;
                  dtp.Checked = false;
  
                  // have to set e.Value to SOMETHING, since it's coming in as NULL
                  // if i set to DateTime.Today, and that's DIFFERENT than the control's current 
                  // value, then it triggers a CHANGE to the value, which CHECKS the box (not ok)
                  // the trick - set e.Value to whatever value the control currently has.  
                  // This does NOT cause a CHANGE, and the checkbox stays OFF.
                  e.Value = dtp.Value;    
              }
              else
              {
                  dtp.ShowCheckBox = true;
                  dtp.Checked = true;
                  // leave e.Value unchanged - it's not null, so the DTP is fine with it.
              }
          }
      }
  }
  void dtBirthdayNullable_Parse( object sender, ConvertEventArgs e )
  {
      // e.value is the formatted value coming from the control.  
      // we change it to be the value we want to stuff in the object.
  
      Binding b = sender as Binding;
      if ( b != null )
      {
          DateTimePicker dtp = (b.Control as DateTimePicker);
          if ( dtp != null )
          {
              if ( dtp.Checked == false )
              {
                  dtp.ShowCheckBox = true;
                  dtp.Checked = false;
                  e.Value = DBvalue.Value
              }
              else
              {
                  DateTime val = Convert.ToDateTime( e.Value );
                  e.Value =val;
              }
          }
      }
  }
  </code></pre>
  
  <hr>
  
  <h2><strong>EDIT</strong></h2>
  
  <p>i found a good solution here </p>
  
  <p><a href="http://blogs.interknowlogy.com/danhanan/archive/2007/01/21/10847.aspx" rel="noreferrer">http://blogs.interknowlogy.com/danhanan/archive/2007/01/21/10847.aspx</a></p>
  
  <p>another perfect solution here</p>
  
  <p><a href="http://www.mofeel.net/70-microsoft-public-dotnet-framework-windowsforms/8806.aspx" rel="noreferrer">http://www.mofeel.net/70-microsoft-public-dotnet-framework-windowsforms/8806.aspx</a></p>