Đây là đủ để giúp bạn nhìn chằm chằm. Bạn có thể cần phải thêm thêm foreach
vòng cho các loại khác control
nếu cần. Điều tuyệt vời là bạn chỉ cần một vài dòng mã trên mỗi loại Control
, không phải mỗi trường hợp, với cách tiếp cận này.
private void addHandlers()
{
foreach (TextBox control in Controls.OfType<TextBox>())
{
control.TextChanged += new EventHandler(OnContentChanged);
}
foreach (ComboBox control in Controls.OfType<ComboBox>())
{
control.SelectedIndexChanged += new EventHandler(OnContentChanged);
}
foreach (CheckBox control in Controls.OfType<CheckBox>())
{
control.CheckedChanged += new EventHandler(OnContentChanged);
}
}
protected void OnContentChanged(object sender, EventArgs e)
{
if (ContentChanged != null)
ContentChanged(this, new EventArgs());
}
public event EventHandler ContentChanged;
Sau khi sửa đổi phương pháp addHandlers
để hỗ trợ tất cả các điều khiển của bạn, và gọi đó là sau khi thêm tất cả các nút điều khiển để hình của bạn, bạn chỉ có thể đăng ký vào các sự kiện ContentChanged
để làm bất cứ điều gì có thể cần phải xảy ra bất cứ lúc nào một cái gì đó trên biểu mẫu đã thay đổi (tức là bật/tắt nút lưu).
có thể trùng lặp của [Cách phát hiện thay đổi trong bất kỳ điều khiển nào của biểu mẫu trong C#?] (Http://stackoverflow.com/questions/3571722/how-to-detect-changes-in-any-control -of-the-form-in-c) –
Nó không thực sự có ý nghĩa để lập trình theo cách đó. Nếu người dùng kiểm tra thứ gì đó thì bỏ chọn lại lần nữa, bạn có định tắt nút này một lần nữa không? Sau khi tất cả, không có gì thay đổi. – LarsTech