2010-12-09 88 views
2

我正在編寫一個Excel添加項,並希望我的功能區按鈕在用戶單擊(編輯)單元格時被禁用。我發現在Excel中的其他功能區按鈕和TFS Excel中添加了這個功能,所以我希望有其他開發人員可以實現的方式。在編輯開始/結束時(即,通過雙擊/按Enter /擊Escape),是否有某種方式來確定/處理?Excel VSTO - 在單元格編輯期間禁用RibbonButton

我想我可以在這些事件中手動啓用/禁用按鈕。我想知道這裏描述的技術http://www.codeproject.com/KB/office/Excel_Edit_Mode.aspx是檢測某個單元格是否正在編輯的最佳方法?

任何指導將不勝感激。

感謝

回答

2

這裏是我做了什麼來實現相同的目標你。

我創建了一個定時器設定爲500毫秒 在定時器的事件處理程序,我進行以下檢查

if (Globals.ThisAddIn.Application.Ready) 
{ 
    SetRibbonState() 
} 

哪裏SetRibbonState是這樣的:

private void SetRibbonState() 
{ 
    if (IsEditing()) 
    { 
      buttonRefresh.Enabled = false; 
    } 
    else 
    { 
      buttonRefresh.Enabled = true; 
    } 
} 

public static bool IsEditing() 
{ 
    return !Globals.ThisAddIn.Application.CommandBars.GetEnabledMso(FileNewDefaultIdMso); 
} 
2

對不起,我遲到回答。我剛剛遇到你的問題。

我想相同的行爲在我的項目,我succesfuly集成此解決方案:

http://www.codeproject.com/KB/office/ExcelInEditMode.aspx

這是無痛的,工作非常出色。我只是在我的項目中添加了類,創建了它的一個實例並將事件附加到EditModeOff和EditModeOn事件。

希望對你有幫助(你或其他人)