2010-08-02 39 views
1

夥計們,我正在用C#創建一個MMC3.0 SnapIn程序。在那裏我有一些範圍節點,我有FormViewDescription的地方,我用C#UserControl實例來顯示一些數據。我的意圖是,用戶必須看到並更新這些數據到UserControl中,並且在該用戶控件上有一個保存按鈕,用戶在編輯結束時應該按下該按鈕,然後我將堅持這一更改。如何檢測C#中寫入的MMC 3.0 SnapIn的關閉事件#

現在的問題是, 如果在做了一些更改後,用戶關閉了SnapIn窗口,他的所有更改都消失了:(我需要在關閉此窗口之前用「Save before quiting」之前的對話框阻止用戶這樣的 - 你知道任何編輯程序的標準功能) 但不能找到一種方法,這樣做的任何建議我

將不勝感激

+0

任何評論傢伙.. ?? – Moim 2010-08-05 06:57:26

回答

1

巧合的是,我也剛剛創建。?!一個MMC的方式與你上面描述的方式非常相似,但經過很多搜索(和沮喪)後,我找不到任何方法取消關閉事件。我推薦c按照下面的解釋掛起你的方法。

首先看看大多數MMC已經在Windows中處理更改設置。通常,如果您想更改某個設置,請在ListView中選擇一個項目,然後右鍵單擊「屬性」以調出設置表單並在其中進行更改。

調出表單讓開發人員能夠控制表單的整個生命週期,並確保設置在關閉之前保存。

所以我的建議是:

  1. 創建您的FormView
  2. 添加你需要
  3. 添加一個按鈕 '修改設置' 您 FormView的任何狀態信息
  4. 創建一個Windows窗體與 保存/取消+所有數據輸入 控件
  5. 啓動您的與 myForm.ShowDialog()形成,當您單擊「修改設置」按鈕
  6. 處理保存/取消按鈕 印刷機,如果 數據是髒

我希望這有助於適當地消除。祝你好運!

+0

嗨非常感謝您的回覆。我知道你的意思,事實上,我也想過一個基於彈出對話框的編輯場景。但對我而言,這可能是不可能的,因爲以下原因: 1.我有許多節點及其詳細信息頁面。因此,需要花費大量時間爲每個人創建彈出式編輯頁面,也是一般顯示的只讀頁面。 2.除了雙重開發工作外,我的客戶不喜歡彈出對話框來配置每個節點。 我可以想象,你已經感到沮喪,但對我來說,好消息是我終於解決了我的問題。 – Moim 2010-08-17 06:39:16

+0

我如何解決我的問題: 我使用了Native窗口攔截器來攔截父SnapIn的WindProc方法,並且只攔截了我正在使用的子節點。攔截WM_Close消息,我的解決方案看起來很棒。就像一個寫字板實例一樣,它會在結束之前提示是,否,取消並根據用戶選擇執行所需操作。 快樂的編程和再次感謝! – Moim 2010-08-17 06:41:16

+0

太棒了!我想你使用這個類: http://msdn.microsoft.com/en-us/library/system.windows.forms.nativewindow.wndproc.aspx 我不知道爲什麼我從來沒有發現,在我的搜索!如果你有時間,試着發佈一個代碼示例,因爲我相信別人有一天也會從中受益。 – hydrogen 2010-08-17 08:53:12