1

我的程序旨在更改和保存用户设置。该程序由许多用户控件组成。当应用程序产生至少一个未保存的更改时,我需要在关闭应用程序之前向用户显示消息以保存设置。控件太多,为每个控件定义一个事件效率低下。我不确定这只是解决我的问题的一种方法。任何建议请..

4

2 回答 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。

另一种方法是以编程方式将处理程序(用于“更改”事件,例如TextChangedTextBox)添加到映射到设置标志的单个子的每个控件。

于 2012-07-20T12:49:34.493 回答