2017-06-02 64 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; 

在我需要的每一種方法中,比如保存或打開一個新文件。

相關問題