WinForms C ++如何检测自上次保存以来文本是否已更改?

时间:2017-06-02 20:21:00

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

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

当我使用OnClosing方法时,它就像:

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

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

文档说我可以使用它:

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

但是我的Visual Studio说TextChangedEventHandler是未定义的。

有没有办法检测自上次保存以来文本是否已更改?我唯一的想法是创建一个新的字符串变量;每次将文件保存在文件中时,程序都会将文本保存到变量中。 最后,应用程序将检查TextBox中的文本和变量是否相同,但我担心它会降低应用程序的速度。

我将不胜感激。

1 个答案:

答案 0 :(得分:0)

首先我设置了变量:

private: bool TextChanged = false;

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

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

最后,我添加了

TextChanged = false;

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