2017-06-02 63 views
-1

我正在使用Windows窗体和C++的记事本。现在我试图设置TextChanged事件,因此如果在关闭应用程序之前没有保存更改,程序不应该询问用户是否要保存他的文档。WinForms C++如何检测自上次保存以来文本已更改?

当我工作的OnClosing方法,它是这样的:

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

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

文档说我可以用这个:

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

但我的Visual Studio中说,TextChangedEventHandler是不确定的。

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

我会很感激任何帮助。

+0

当触发TextChanged处理程序时,您可以设置布尔值。该布尔将需要更高的范围或能见度,其中设置者和检查者都可以访问它。 –

+0

您需要为您的文本框的TextChanged事件添加一个侦听器。你在做那个吗? (你粘贴的代码的一小部分是你如何声明TextChanged事件,而不是你如何使用文本框类已经提供的那个。) –

回答

0

首先,我已经设置了变量:

private: bool TextChanged = false; 

通过点击文本框和属性,我们可以找到一个TextChanged事件。点击两次,我们要添加代码到我们的.h文件,那么我们就应该标注文本为改变会发生什么,在这种情况下:

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

最后,我加

TextChanged = false; 

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

相关问题