2012-07-18 60 views
0

我們正在開發一個使用少量自定義控件的.NET應用程序。在WinForms中設計可取消操作(保存未決更改)

一個特定的控件是一個簡單的「文本編輯器」,類似控件,根據用戶的選擇將一些內容加載到內容中。

如果用戶修改了此控件中的文本,然後進行了不同的選擇以覆蓋該內容,我們希望通常的彈出窗口顯示「您是否想要保存待處理的更改?YES/NO /取消」。

我在考慮應用程序的哪個級別應該是這個負責人:控制本身或使用它的代碼?

我一直在尋找現有的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; 
    } 
} 
+1

如何將數據綁定到控件?你是從UI Form中手動填充它還是在你的控件中有一個內部綁定來處理數據庫調用/更新? – davenewza 2012-07-18 08:32:35

+1

沒有數據綁定。該控件基本上是一個接受用戶文本的大文本框。我還保留一個標誌來監視數據是否「髒」(需要保存)。在導航/替換文本時,我想檢查它是否已保存。 – 2012-07-18 08:35:04

回答

1

我不認爲你需要處理事件 - 這隻會使事情複雜化。這是線性問題,並且彈出對話框會暫停當前線程,併爲您提供足夠的控制來處理用戶的決定。這種情況下的事件是'UserSelectionChanged'事件。不需要更多。

1

在兩種情況下看起來都不錯,但保持邏輯一致;如果你已經封裝了用戶控件中的文件加載/上下文加載,那麼保留使用事件。否則,在目標表單/控件上處理它。

相關問題