2012-06-05 152 views
0

我正在嘗試註冊UIControlledApplication的DialogBoxShowing事件。但是我無法使用IExternalApplication接口的OnStartup/OnShutdown實現。最好我能想出是...註冊事件

public delegate void Handeler(object sender, DialogBoxShowingEventArgs e); 

    public void RegesterDialogEvent(UIControlledApplication uicApp) 
    { 
     UIAppEventHandlers1 uaeh1 = new UIAppEventHandlers1(); 
     Handeler hdlr = new Handeler(UIAppEventHandlers1.UIAppEvent_DialogBoxShowing_Handler); 

     uicApp.DialogBoxShowing += hdlr; 

    } 

但我得到「無法隱式轉換類型‘TaskDialogEvent_01.Form1.Handeler’到「System.EventHandler Autodesk.Revit.UI.Events.DialogBoxShowingEventArgs >「錯誤。我的'UIAppEventHandlers1'方法與Handler具有相同的簽名。我做錯了什麼,誰能提供一個例子?謝謝。

回答

0

你可能想使用你創建的uaeh1實例:

UIAppEventHandlers1 uaeh1 = new UIAppEventHandlers1(); 
uicApp.DialogBoxShowing += uaeh1.UIAppEvent_DialogBoxShowing_Handler; 

這仍然是奇怪的,因爲你new'ed該對象。

你說你不能只在應用程序類中註冊/取消註冊如下?

public Result OnStartup(UIControlledApplication app) 
{ 
    app.DialogBoxShowing += OnDialogBoxShowing; 
    return Result.Succeeded; 
} 

public Result OnShutdown(UIControlledApplication app) 
{ 
    app.DialogBoxShowing -= OnDialogBoxShowing; 
    return Result.Succeeded; 
} 

void OnDialogBoxShowing(object sender, DialogBoxShowingEventArgs args) 
{ 
} 

使用DialogBoxShowing事件處理對話框不是我的經驗中的最佳方式。我會建議尋找新的失敗處理API。