c#中用于不同类型的多个控件的公共事件处理程序
本文关键字:控件 程序 事件处理 用于 同类型 | 更新日期: 2023-09-27 18:16:36
我正在创建一个具有多个字段的表单:文本框,复选框,下拉框数字上下框。
当表单加载时,我获取数据库并填充现有数据。
如果用户更改了任何字段,我必须将该信息发送到数据库。
现在,我对每个控制(3个checkedChanged
, 4个TextChanged
, 3个ValueChanged
和2个SelectedIndexChanged
)有一个事件。
我已经取了一个bool
数组,其中我将变量设置为True并更改背景颜色。
bool[] bChangedValues = new bool[12];
private void tbName_TextChanged(object sender, EventArgs e)
{
tbName.BackColor = CHANGED_COLOUR;
// Set the flag to true to indicate value is changed
bChangedValues [Name_Index] = true;
}
private void chIEnable_CheckedChanged(object sender, EventArgs e)
{
chIEnable.BackColor = CHANGED_COLOUR;
// Set the flag to true to indicate value is changed
bChangedValues [IEnable_Index] = true;
}
等等…
当用户点击保存时,我将解析这个数组并发送命令到数据库,并使用新值。
我意识到这是一个糟糕的实现。使用公共事件处理程序会容易得多。我看到了这个答案,觉得它很适合我的问题。但是我怎么能从sender
访问BackColor
等属性呢?
我需要一种方法俱乐部在一个不同的控制类型的多个事件处理程序,也访问该事件处理程序中的控件的属性。
我使用的是c# .NetFramework 4.0
如果您将索引的名称添加到控件的Tag
,那么您也可以设置bChangedValues
。
private void Control_ValueChanged(object sender, EventArgs e)
{
var control = (Control)sender;
control.BackColor = CHANGED_COLOUR;
bChangedValues[control.Tag] = true;
}