我的程序旨在更改和保存用户设置。该程序由许多用户控件组成。当应用程序产生至少一个未保存的更改时,我需要在关闭应用程序之前向用户显示消息以保存设置。控件太多,为每个控件定义一个事件效率低下。我不确定这只是解决我的问题的一种方法。任何建议请..
问问题
82 次
2 回答
0
可能这对某人有用:
public partial class Form1 : Form
{
public bool EditedFlag=false;
private void Changed(object sender, EventArgs e)
{
EditedFlag=true;
}
public Form1()
{
InitializeComponent();
foreach (Control ctrl in this.Controls)
{
ControlEvents(ctrl);
}
}
public void ControlEvents<T>(T sender)
{
if (sender is TextBox)
{
var obj = sender as TextBox;
obj.TextChanged+= new EventHandler(Changed);
}
if (sender is CheckBox)
{
var obj = sender as CheckBox;
obj.CheckedChanged += new EventHandler(Changed);
}
if (sender is ComboBox)
{
var obj = sender as ComboBox;
obj.SelectedIndexChanged += new EventHandler(Changed);
}
}
}
于 2012-07-20T13:21:53.917 回答
0
实际上没有任何选项可以满足您的要求。如果您的控件绑定到一个对象,您可以使用该对象来查看它是否有任何更改,假设该对象实现了 INotifyPropertyChanged。
另一种方法是以编程方式将处理程序(用于“更改”事件,例如TextChanged
TextBox)添加到映射到设置标志的单个子的每个控件。
于 2012-07-20T12:49:34.493 回答