【问题标题】:WinForms C++ How to detect that text has changed since it was saved last time?WinForms C ++如何检测文本自上次保存以来已更改?
【发布时间】:2017-06-02 20:21:00
【问题描述】:

我正在使用 Windows 窗体和 C++ 编写记事本。现在我正在尝试设置 TextChanged 事件,因此程序不应该询问用户是否要保存他的文档,如果没有要保存的更改(在关闭应用程序之前)。

当我在处理 OnClosing 方法时,它是这样的:

    protected: virtual void OnClosing(CancelEventArgs^ e) override 
    { // code here }

但是 TextChanged 不是一个方法,它是一个事件。

文档说我可以使用这个:

    public:
    event TextChangedEventHandler^ TextChanged { // code here } 

但我的 Visual Studio 说 TextChangedEventHandler 未定义。

有什么方法可以检测到文本自上次保存后发生了变化?我唯一的想法是创建一个新的字符串变量;每次将文本保存在文件中时,程序都会将文本保存到变量中。 最后,应用程序会检查TextBox中的文本和变量是否相同,但恐怕会拖慢应用程序。

我将不胜感激。

【问题讨论】:

  • 您可以在触发 TextChanged 处理程序时设置一个布尔值。 bool 需要具有更高的范围或可见性,setter 和 checker 都可以访问它。
  • 您需要为您的文本框的 TextChanged 事件添加一个侦听器。你这样做吗? (您粘贴的一小段代码是您如何声明 TextChanged 事件,而不是如何使用文本框类已经提供的事件。)

标签: .net winforms textbox c++-cli textchanged


【解决方案1】:

首先我设置了变量:

private: bool TextChanged = false;

通过单击文本框和属性,我们可以找到一个 TextChanged 事件。单击两次,我们将代码添加到我们的 .h 文件中,然后我们应该标记文本更改时应该发生的情况,在这种情况下:

private: System::Void tresc_TextChanged(System::Object^  sender, 
    System::EventArgs^  e) 
        {
            TextChanged = true;
        }

最后我加了

TextChanged = false;

在我需要的每一种方法中,例如保存或打开一个新文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-22
    • 1970-01-01
    • 1970-01-01
    • 2017-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多