저는 C#에서 새 프로그램입니다. DateTimePicker 값 변경 이벤트를 사용하지만 사용자가 화살표를 클릭하거나 값이 프로그래밍 방식으로 변경되면 ValueChanged 이벤트가 발생합니다. 사용자의 상호 작용 만 식별하려고합니다. DateTimePicker (값이 프로그래밍 방식으로 변경되지 않은 경우),이를 수행 할 수있는 방법이 있습니까?사용자가 DateTimePicker 컨트롤과 상호 작용할 때 발생하는 이벤트는 무엇입니까?
답변
예, MSDN documentation을 살펴보십시오. 특히, OnValueChanged
이벤트
: 생성자 방법
을 :
void f_ValueChanged(object sender, EventArgs e)
{
//Do whatever you need when the value changes here
}
: 여기
dateTimePickerControl.ValueChanged += new EventHandler(picker_ValueChanged);
그리고는 메소드 서명입니다
디자이너 에게서도이 작업을 수행 할 수 있습니다. 등록 정보, 이벤트 부분으로 가면 모든 이벤트가 나열됩니다. 더블 클릭하면 메소드 서명과 배선이 생성됩니다.
이 클래스
에서 전역 변수를 만들기 : 당신의 UPDATE TOUPDATE는
특별히이이 프로그램의 변화인지 여부를 확인하고 싶은 경우에, 당신은 이런 일을하고 싶지
Boolean isProgrammaticEvent = false
; 이벤트 배선에서
isProgrammaticEvent = true;
//Change picker value
:
프로그래밍 방식 변경 전void f_ValueChanged(object sender, EventArgs e)
{
Boolean isThisProgrammatic = isProgrammaticEvent;
isProgrammaticEvent = false;
if(isThisProgrammatic)
return;
//Do whatever you need when the value changes here
}
Justin은 답변을 주셔서 감사하지만이 이벤트는 두 가지 상황에서 나타납니다 (사용자가 변경하거나 프로그램 방식으로 변경 한 값). 사용자가 DateTimePicker의 값을 변경하는 경우에만 식별 할 수있는 방법이 있습니까 – user1157690
방법이 있다고 생각하지 않지만 프로그래밍 방식으로 변경하기 전에 켤 수있는 전역 부울 값을 가질 수 있으며 이벤트가 항상 꺼지게 할 수 있습니까? 전역은 훌륭한 프로그래밍 실습이 아니므로이 기능이 실제로 필요하다는 것을 생각해보십시오. :) 다음은이 행에 대한 질문입니다. http://stackoverflow.com/questions/2806601/how-to-distinguish- 사용자 - 대 - 프로그래밍 - 변경 - winforms - 체크 박스 –
내가해야 할 일을 반영하도록 코드를 업데이트했습니다. BTW –
당신은 DropDown
이벤트에 이벤트 핸들러를 해제 할 수 있으며, 회전 드롭 다운 캘린더가 닫힐 때 다시 돌아옵니다. CloseUp
경우에 사용자는 :
private void dateTimePicker1_ValueChanged(object sender, EventArgs e) {
this.Text = dateTimePicker1.Value.ToString();
}
private void dateTimePicker1_DropDown(object sender, EventArgs e) {
dateTimePicker1.ValueChanged -= dateTimePicker1_ValueChanged;
}
private void dateTimePicker1_CloseUp(object sender, EventArgs e) {
dateTimePicker1.ValueChanged += dateTimePicker1_ValueChanged;
dateTimePicker1_ValueChanged(sender, e);
}
이것은 사용자가 드롭 다운 동안 일정을 스크롤하는 동안 발사에서 ValueChanged
이벤트를 방지 할 수 있습니다.
class DateTimePickerUser : DateTimePicker
{
private bool userSetValue;
public bool UserSetValue
{
get
{
return userSetValue;
}
}
public DateTimePickerUser()
{
userSetValue = true;
}
public new DateTime Value
{
get
{
return base.Value;
}
set
{
userSetValue = false;
base.Value = value;
userSetValue = true;
}
}
}
을 : 사용자가 변경 한 때를 알고
private void ProgramChangesDateTime(DateTime dt) {
dateTimePicker1.ValueChanged -= dateTimePicker1_ValueChanged;
dateTimePicker1.Value = dt;
dateTimePicker1.ValueChanged += dateTimePicker1_ValueChanged;
}
당신은 DateTimePicker
에서 파생 할 수 있습니다
Form
에서
DateTimePickerUser
을 사용하면 ValueChanged 이벤트의 플래그를 확인하기 만하면됩니다.
private void dateTimePickerUser1_ValueChanged(object sender, EventArgs e)
{
if (dateTimePickerUser1.UserSetValue)
this.Text = "User changed value.";
else
this.Text = "Code changed the value.";
}
이것은 Justin Pihony의 예와 비슷하지만 플래그를 직접 설정할 필요는 없으며이 컨트롤을 사용하기 만하면됩니다.
- 1. use가 컨트롤과 상호 작용할 때 동적으로 검색 결과를 표시합니다.
- 2. 사용자가 페이지에서 텍스트를 선택할 때 발생하는 이벤트는 무엇입니까?
- 3. 사용자가 Seekbar와 상호 작용할 수 없습니다.
- 4. 웹 브라우저를 사용하여 플래시 컨트롤과 상호 작용할 수 있습니까?
- 5. 사용자가 슬라이더와 상호 작용할 때 스크롤 뷰가 표시되지 않음
- 6. 프로세스가 발생할 때 발생하는 이벤트는 무엇입니까?
- 7. UserControl이 표시 될 때 발생하는 이벤트는 무엇입니까?
- 8. 사용자가 마우스를 통해 그래픽 객체와 상호 작용할 수있는 방법은 무엇입니까?
- 9. AnythingSlider - 상호 작용할 때 일시 중지
- 10. C#/WPF : 웹 브라우저 컨트롤과 상호 작용?
- 11. 캐시와 상호 작용할 때 스레드 안전성이 향상되었습니다.
- 12. 사용자가 그룹에 가입하고 그룹과 상호 작용할 수있는 레일에 사이트 만들기
- 13. 사용자가 wpf에서 상호 작용할 수 있도록 프로그램을 일시 중지
- 14. 사용자가 상호 작용할 수없는 UIWebView에서 링크를 활성화 할 수 없습니다.
- 15. 사용자가 Microsoft Vista에서 직접 서비스와 상호 작용할 수 있습니까?
- 16. Google Charts와 상호 작용할 라이브러리
- 17. 플로 플레이어가 클립 다운로드를 완료했을 때 발생하는 이벤트는 무엇입니까?
- 18. 지형지 물을 만들 때 마지막으로 발생하는 이벤트는 무엇입니까?
- 19. JavaScript의 주소 표시 줄 및 브라우저 컨트롤과 상호 작용
- 20. 다른 클래스의 Windows 컨트롤과 상호 작용 C#
- 21. 을 DateTimePicker 및 Backbone.View 상호 작용
- 22. C#에서 Javascript와 상호 작용할 수있는 방법은 무엇입니까?
- 23. Java : JFrame과 상호 작용할 수 없습니다.
- 24. 사용자가 상호 작용할 때 uitextfield에 특정 문자열이있는 경우 uitextfield의 텍스트를 편집하는 방법
- 25. Qt는 Windows 클립 보드와 상호 작용할 때 어떤 API를 사용합니까?
- 26. .net - AccessViolation 처음으로 네이티브 DLL과 상호 작용할 때
- 27. 창이 표시되지만 시뮬레이터와 상호 작용할 수 없습니다.
- 28. 플렉스는 itemrenderer의 버튼과 상호 작용할 수 없습니다
- 29. WPF XamDataGrid : 사용자가 열을 이동하거나 크기를 조정할 때 발생하는 이벤트
- 30. 애니메이션이 진행되는 동안 UITableView와 상호 작용할 수 없습니다.
질문이 명확하지 않습니다. 문장을 확장하거나 교정하여 원하는 것을 명확히 할 수 있습니까? – Mathieu
'Click' 이벤트를 찾으십시오 ...하지만 이것은 이상한 일입니다. –
동일한 문제에 직면하고 있지만 datetimepicker 하나만 사용하여 데모 winforms 앱을 만들고 화살표/캘린더 아이콘을 클릭하면 이벤트가 시작되지 않습니다. 예상대로 다른 날짜가 변경된 경우에만 해고됩니다. 그래서 문제는 아직 찾을 수 없었지만 코드의 어딘가에서 수동으로 값을 설정해야합니다. – Veverke