Có một hộp kiểm tra trong điều khiển datetimepicker của winforms .net. Nhưng tôi không thể tìm thấy sự kiện được kích hoạt khi hộp kiểm được chọn hoặc bỏ chọn. Có cách nào không?Làm thế nào để có được datetimepicker C# winform checked/unchecked event
Trả lời
vì bạn sẽ phải lưu trữ cũ "đã kiểm tra" giá trị để so sánh với cái mới, vì vậy vì bạn sẽ có thể xác định nếu "kiểm tra" tiểu bang đã thay đổi:
bool oldDateChecked = false; //if it's created as not checked
private void dtp_filtro_date_ValueChanged(object sender, EventArgs e)
{
if (this.dtp_filtro_date.Checked != oldDateChecked)
{
oldDateChecked = this.dtp_filtro_date.Checked;
//do your stuff ...
}
}
Bên cạnh đó là kích hoạt các sự kiện giá trị thay đổi
Trừ khi thuộc tính Đã kiểm tra được đặt trong mã. –
Chạy cùng một vấn đề. Tôi cần một CheckedChangedEvent trên một điều khiển DateTimePicker winforms. Vì vậy, với nguồn cảm hứng của các câu trả lời trước tôi, tôi tạo ra một điều khiển người dùng kế thừa có tên DateTimePicker2, kế thừa từ DateTimePicker thực hiện sự kiện này. Có vẻ như nó hoạt động nhưng không có bảo đảm.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace MyNameSpace
{
public partial class DateTimePicker2 : DateTimePicker
{
private bool _checked;
public new bool Checked
{
get
{
return base.Checked;
}
set
{
if (value != base.Checked)
{
base.Checked = value;
_checked = base.Checked;
OnCheckedChanged(new CheckedChangedEventArgs { OldCheckedValue = !value, NewCheckedValue = value });
}
}
}
public event CheckedChangedEventHandler CheckedChanged;
public DateTimePicker2()
{
InitializeComponent();
_checked = Checked;
}
protected virtual void OnCheckedChanged(CheckedChangedEventArgs e)
{
if (CheckedChanged != null) CheckedChanged(this, e);
}
private void DateTimePicker2_ValueChanged(object sender, EventArgs e)
{
if (Checked != _checked)
{
_checked = Checked;
CheckedChangedEventArgs cce = new CheckedChangedEventArgs { OldCheckedValue = !_checked, NewCheckedValue = _checked };
OnCheckedChanged(cce);
}
}
}
public delegate void CheckedChangedEventHandler(object sender, CheckedChangedEventArgs e);
public class CheckedChangedEventArgs : EventArgs
{
public bool OldCheckedValue { get; set; }
public bool NewCheckedValue { get; set; }
}
}
Và tắt khóa học đừng quên đăng ký sự kiện DateTimePicker2_ValueThay đổi từ nhà thiết kế.
Lý do tại sao tôi sử dụng cả hai thuộc tính Checked mới (để ẩn base.Checked một) và một lĩnh vực _checked để giữ xe tải giá trị cũ, là bởi vì
- tài sản base.Checked không kích hoạt sự kiện ValueChanged khi thay đổi theo chương trình và do đó cần một thuộc tính mới có thể thực hiện điều đó.
- thuộc tính này.Đánh giá mới không kích hoạt sự kiện ValueChanged khi được thay đổi từ giao diện người dùng và do đó cần một cờ sẽ theo dõi thuộc tính base.Checked.
Về cơ bản, kết hợp cả hai phương pháp đều là cần thiết.
Tôi hy vọng điều này sẽ hữu ích.
Giải pháp tốt và đơn giản. Để làm cho nó theo thời trang năm 2017, sử dụng 'event EventHandler
Tôi biết điều này là siêu cũ nhưng điều này có thể giúp một ai đó.
Bạn có thể chụp DataTimePicker.MouseUp
kiện
private void dateTimePicker1_MouseUp(object sender, MouseEventArgs e)
{
if (((DateTimePicker)sender).Checked)
{
//Do whatever you need to do when the check box gets clicked
}
else
{
//Do another stuff...
}
}
Bạn sẽ cần phải làm tương tự với KeyUp
kiện để có được không gian nhấn phím mà cũng có thể kích hoạt hộp kiểm.
- 1. Làm thế nào để có được View trong OnContextItemSelected event?
- 2. Chọn một mục trong ListBox Control (WinForm & C#) trên MouseDown Event
- 3. Làm thế nào để sử dụng DateTimePicker ràng buộc trong WPF
- 4. C# app.config trong winform
- 5. làm thế nào để khóa GUI ứng dụng trong C# Winform
- 6. Làm thế nào để vô hiệu hóa các dòng dưới dải công cụ trong winform C#?
- 7. Làm thế nào để phân biệt Unload Event được kích hoạt bằng Refresh hoặc Window Close?
- 8. C# WinForm - tải màn hình
- 9. C event handler # tùy chỉnh
- 10. Clone Controls - C# (Winform)
- 11. Làm thế nào để có được Id phiên Trong C#
- 12. Làm thế nào để có được DPI trong C# .NET?
- 13. C# làm thế nào để có được Byte [] từ IntPtr
- 14. Làm thế nào để có được Id thread trong C#
- 15. Làm thế nào để đặt một giá trị DateTimePicker để DateTime.MaxValue
- 16. Làm thế nào để có được xử lý của các hình thức trên cùng trong một ứng dụng WinForm?
- 17. Làm thế nào để thiết lập thời gian hiện tại trong một DateTimePicker
- 18. C# Winform ProgressBar và BackgroundWorker
- 19. "x" Để Giảm thiểu WinForm, ContextMenu Để Đóng WinForm?
- 20. C# Hình thức Winform trong mẫu
- 21. Làm thế nào để sử dụng giá trị RGB riêng để thay đổi Màu Nút Winform?
- 22. DateTimePicker AM/PM Dropdown
- 23. Làm thế nào để có được php_phar.dll?
- 24. Cách thêm trợ giúp để winform C# application
- 25. Mở DateTimePicker C# kiểm soát theo chương trình
- 26. Làm thế nào để vô hiệu hóa điều hướng trên WinForm với các mũi tên trong C#?
- 27. Làm thế nào để thêm WinForm User Control vào WPF để tôi có thể tham khảo nó trong tệp xaml.cs
- 28. OSX Quartz Event Taps: loại sự kiện và làm thế nào để chỉnh sửa sự kiện
- 29. Làm thế nào để có được keyCode trong android
- 30. C# CS0079 Event Xử lý Compile Lỗi
Hãy xem tại đây http://social.msdn.microsoft.com/Forums/en-US/winforms/thread/27dd3141-5dfb-439e-8e30-e051a019303a/ – V4Vendetta