0

我们正在开发一个使用一些自定义控件的 .NET 应用程序。

一个特定的控件是一个简单的“文本编辑器”,如控件,根据用户的选择将一些内容加载到其中。

如果用户修改此控件中的文本,然后做出不同的选择来覆盖该内容,我们希望通常的弹出窗口显示“您要保存挂起的更改吗?是/否/取消”。

我正在考虑应用程序的哪个级别应该对此负责:控件本身还是使用它的代码?

我一直在研究现有的 CancelEventArgs 类,并考虑使用它,但是我不确定这是否适合这种特定情况。

我正在考虑的示例代码:

设置自定义控件的文本时,引发“BeforeChanged”事件。这将被处理并允许取消操作。

public void SetText(string text)
{
    CancelEventArgs args = new CancelEventArgs();

    // Raise the BeforeTextChanged event.
    BeforeTextChanged(args);

    // If the user cancelled the operation - do not modify text.
    // For example, user code will check if needs saving, show the popup, etc.
    if (args.Cancel)
    {
        return;
    }
}
4

2 回答 2

1

在这两种情况下看起来都不错,但要保持逻辑一致;如果您已将文件加载/上下文加载封装在用户控件中,则保留使用事件。否则,在目标表单/控件上处理它。

于 2012-07-18T09:34:07.793 回答
1

我认为你不需要用事件来处理这个问题——它只会使事情复杂化。这是线性问题,弹出对话框会暂停当前线程,并为您提供足够的控制权来处理用户的决定。这种情况下的事件是“UserSelectionChanged”事件。不需要更多。

于 2012-07-18T08:59:52.157 回答