4

winformC# でベースのデスクトップ アプリケーションを開発しています。ユーザーに DateTimePicker を に設定してもらいたいNullです。検索ボックスを開発していますが、日付が設定されている場合は無視したいと考えています。Null

これが私がやっていることです:

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

     private void dateTimePicker2_ValueChanged(object sender, EventArgs e)
     {
         this.dateTimePicker2.CustomFormat = "dd-MM-yy";
     }

ここまでは順調ですね。ただし、ユーザーが日付を選択すると、dateTimePicker2コントロールには日付 (ユーザーが選択した日付) が表示されます。日付を再度 null に設定する方法はありません。datetimepickerコントロールに関連付けられたチェックボックスを有効にしたくありません。

datetimepicker日付をに設定できるかどうか疑問に思っていましたnull

ありがとう

4

7 に答える 7

5

これは古い投稿からの参照ですが、このサイトの他のユーザーが投稿したものです。

// Use ValueChanged to decide if the value should be displayed:
    dateTimePicker1.ValueChanged += (s, e) => { dateTimePicker1.CustomFormat = (dateTimePicker1.Checked && dateTimePicker1.Value != dateTimePicker1.MinDate) ? "MM/dd/yyyy" : " "; };

    //When getting the value back out, use something like the following:
    DateTime? dt = (dateTimePicker1.Checked && dateTimePicker1.Value != dateTimePicker1.MinDate) ?  (DateTime?) dateTimePicker1.Value : null; 
    // or
    DateTime dt2 = (dateTimePicker1.Checked && dateTimePicker1.Value != dateTimePicker1.MinDate) ?  dateTimePicker1.Value : DateTime.MinValue; 

または、以下のように CustomFormat を " " 空のスペースに設定できます

dateTimePicker1.CustomFormat= " ";
于 2013-02-06T07:03:02.813 に答える
4

ピッカー プロパティに追加checkboxします。datetime

string datevalue = dateTimePicker2.Checked != true ? "N/A": dateTimePicker2.Text;**
于 2014-12-02T19:07:16.383 に答える
1

datetimepicker の日付を null に設定できるかどうか疑問に思っていました

その型は null 許容ではないため、に設定DateTimePicker.Valueする方法はありません。nullMSDN は次のように述べています。

Value プロパティがコードまたはユーザーによって変更されていない場合、現在の日付と時刻 (DateTime.Now) に設定されます。

しかし、これは問題ではありません。ではなく、バインドされたプロパティを null に設定する必要がありますDateTimePicker.Value

public class MyModel : INotifyPropertyChanged
{
    public DateTime? DateTimeFilter
    {
        get { return dateTimeFilter; }
        set
        {
            if (dateTimeFilter != value)
            {
                dateTimeFilter = value;
                OnPropertyChanged("DateTimeFilter");
            }
        }
    }
    private DateTime? dateTimeFilter;        

    // INotifyPropertyChanged implementation is omitted
}

public partial class Form1 : Form
{
    private readonly MyModel model;

    public Form1()
    {
        InitializeComponent();

        model = new MyModel();
        dateTimePicker1.DataBindings.Add("Value", model, "DateTimeFilter", true, DataSourceUpdateMode.OnPropertyChanged, DateTime.Now);
    }

    private void button1_Click(object sender, EventArgs e)
    {
        MessageBox.Show(model.DateTimeFilter.HasValue ? string.Format("User has selected '{0}'.", model.DateTimeFilter) : "User hasn't selected anything.");
    }

    private void button2_Click(object sender, EventArgs e)
    {
        // here's the data binding magic: our model's property becomes null, 
        // and datetimepicker's value becomes DateTime.Now, as it was initially set
        model.DateTimeFilter = null;
    }
}
于 2013-02-06T08:09:21.417 に答える
1

DateTime はヌル可能ではないため、可能だとは思いません。

ただし、DateTime.MinValueこの方法を使用して、簡単に比較することもできます

if (datetimepicker.DateTime == DateTime.MinValue)
{
  // just as good as null, maybe
}
于 2013-02-06T07:02:44.897 に答える
0

これは、SharePoint アプリケーション ページで DateTimeControl を使用しているときにうまくいきました。

if (dtcOpenDate.SelectedDate != DateTime.Now)
{
    item["Open Date"] = dtcOpenDate.SelectedDate;    
}
于 2014-10-19T23:20:31.460 に答える