Programing

DateTimePicker에 빈 문자열을 표시하려면 어떻게해야합니까?

crosscheck 2020. 12. 12. 10:05
반응형

DateTimePicker에 빈 문자열을 표시하려면 어떻게해야합니까?


DateTimePicker기본값이 아무것도없는, 즉 날짜가없는를 표시하고 싶습니다 .

예를 들어 작업에 대한 시작 날짜 dtTaskStartdtTaskEnd종료 날짜가 있지만 종료 날짜를 알 수없고 처음에 채워지지 않습니다.

yyyy-MM-dd두 컨트롤 대한 사용자 지정 형식을 지정했습니다 .

값을로 설정 null하거나 런타임에 빈 문자열로 인해 오류가 발생하므로 어떻게 수행 할 수 있습니까?

이 필드의 활성화를 제어하기 위해 확인란을 사용하는 것을 고려했지만 여전히 초기 값을 표시하는 문제가 있습니다.

편집 :
틀림없이 DateTimePicker Null Value (.NET) 질문의 중복 이지만 내 문제에 대해 찾은 해결책은 해당 질문에 대한 해결책이 아니므로 다른 사람들이 찾을 수 있도록 여기에 남아 있어야한다고 생각합니다 ..


다음과 같이 속성을 설정하십시오.

사용자가 "삭제 버튼"또는 "키 삭제"를 누르면

dtpData.CustomFormat = " "  'An empty SPACE
dtpData.Format = DateTimePickerFormat.Custom

DateTimePicker1_ValueChanged이벤트 할 일

dtpData.CustomFormat = "dd/MM/yyyy hh:mm:ss"

다른 코드에서 값을 무시해야하는지 여부를 나타내는 플래그로 CustomFormat확인란 을 사용하여 속성 을 사용하여 값을 난독 화합니다 cbEnableEndDate.

If dateTaskEnd > Date.FromOADate(0) Then
    dtTaskEnd.Format = DateTimePickerFormat.Custom
    dtTaskEnd.CustomFormat = "yyyy-MM-dd"
    dtTaskEnd.Value = dateTaskEnd 
    dtTaskEnd.Enabled = True
    cbEnableEndDate.Checked = True
Else
    dtTaskEnd.Format = DateTimePickerFormat.Custom
    dtTaskEnd.CustomFormat = " "
    dtTaskEnd.Value = Date.FromOADate(0)
    dtTaskEnd.Enabled = False
    cbEnableEndDate.Checked = False
End If

이것은 C #에서 나를 위해 일했습니다.

if (enableEndDateCheckBox.Checked == true)
{
    endDateDateTimePicker.Enabled = true;
    endDateDateTimePicker.Format = DateTimePickerFormat.Short;                
}
else
{
    endDateDateTimePicker.Enabled = false;
    endDateDateTimePicker.Format = DateTimePickerFormat.Custom;
    endDateDateTimePicker.CustomFormat = " ";
}

좋은 사람!


누구든지 양식로드 이벤트 중에 datetimepicker 컨트롤을 공백으로 설정하는 데 문제가있는 경우 필요에 따라 현재 날짜를 표시합니다. 예는 다음과 같습니다.

확인 CustomFormat = " "두 방법에서 동일 공간의 수 (적어도 하나의 공간)이

Private Sub setDateTimePickerBlank(ByVal dateTimePicker As DateTimePicker)    

    dateTimePicker.Visible = True
    dateTimePicker.Format = DateTimePickerFormat.Custom
    dateTimePicker.CustomFormat = "    " 
End Sub


Private Sub dateTimePicker_MouseHover(ByVal sender As Object, ByVal e As 
                    System.EventArgs) Handles dateTimePicker.MouseHover

    Dim dateTimePicker As DateTimePicker = CType(sender, DateTimePicker)
    If dateTimePicker.Text = "    " Then
        dateTimePicker.Text = Format(DateTime.Now, "MM/dd/yyyy")
    End If
End Sub

When I want to display an empty date value I do this

            if (sStrDate != "")
            {
                dateCreated.Value = DateTime.Parse(sStrDate);
            }
            else
            {
                dateCreated.CustomFormat = " ";
                dateCreated.Format = DateTimePickerFormat.Custom;
            }

Then when the user clicks on the control I have this:

            private void dateControl_MouseDown(object sender, MouseEventArgs e)
            {
                ((DateTimePicker)sender).Format = DateTimePickerFormat.Long;    
            }

This allows you to display and use an empty date value, but still allow the user to be able to change the date to something when they wish.

Keep in mind that sStrDate has already been validated as a valid date string.


The basic concept is the same told by others. But its easier to implement this way when you have multiple dateTimePicker.

dateTimePicker1.Value = DateTime.Now;
dateTimePicker1.ValueChanged += new System.EventHandler(this.Dtp_ValueChanged);
dateTimePicker1.ShowCheckBox=true;
dateTimePicker1.Checked=false;


dateTimePicker2.Value = DateTime.Now;
dateTimePicker2.ValueChanged += new System.EventHandler(this.Dtp_ValueChanged);
dateTimePicker2.ShowCheckBox=true;
dateTimePicker2.Checked=false;

the value changed event function

        void Dtp_ValueChanged(object sender, EventArgs e)
        {
            if(((DateTimePicker)sender).ShowCheckBox==true)
            {
                if(((DateTimePicker)sender).Checked==false)
                {
                    ((DateTimePicker)sender).CustomFormat = " ";
                    ((DateTimePicker)sender).Format = DateTimePickerFormat.Custom;
                }
                else
                {
                    ((DateTimePicker)sender).Format = DateTimePickerFormat.Short;
                }
            }
            else
            {
                ((DateTimePicker)sender).Format = DateTimePickerFormat.Short;
            }
        }

When unchecked enter image description here

When checked enter image description here

참고URL : https://stackoverflow.com/questions/846395/how-can-i-make-a-datetimepicker-display-an-empty-string

반응형