我无法访问我创建的任何事件的对象成员! - 我错过了重要的东西吗?
当前示例:
我正在开发Excel Office加载项。我有一个可以管理文件的优秀类,但是我试图将事件方法放在功能区类中,以便可以更改功能区控件。
简而言之,该程序需要:
- 将我的自定义功能区的标签控制文本设置为活动表的名称。
我使用以下技术为我的C#Excel Office加载程序创建了一个激活事件:
private event Excel.WorkbookEvents_SheetActivateEventHandler SheetActivateEvent;
...
public void Ribbon_Load(Office.IRibbonUI ribbonUI)
{
this.ribbon = ribbonUI;
ExcelFile TheFile = new ExcelFile();
SheetActivateEvent = new Excel.WorkbookEvents_SheetActivateEventHandler(SheetActivate);
TheFile.XLBook.SheetActivate += SheetActivateEvent;
}
...
private void SheetActivate(System.Object Sheet)
{
//WorkSheetLabel = Sheet.Name;
this.ribbon.Invalidate();
}
...
public String GetSheetLabel(Office.IRibbonControl Control)
{
return WorkSheetLabel;
}
事件有效 - 如果我在功能区无效线上放置一个断点,我可以清楚地看到每次更改活动表时都会触发事件。
但是,我似乎无法访问对象的成员。如果我取消纸张。
我的其他事件也会发生此问题。
我应该如何获得名称?还是对床单做任何事情?
希望我在这里很慢...
最好的问候
正如您看到的表是Object
。在使用之前,您必须将其施放为真正的对象。在这种情况下,我很想念它是Worksheet
SO:
private void SheetActivateEvent(System.Object Sheet)
{
Worksheet castedSheet = Sheet as Worksheet;
WorkSheetLabel = castedSheet.Name; //Should work now.
this.ribbon.Invalidate();
}
更新
尝试以下操作:
public void Ribbon_Load(Office.IRibbonUI ribbonUI)
{
this.ribbon = ribbonUI;
ExcelFile TheFile = new ExcelFile();
// SheetActivateEvent = new Excel.WorkbookEvents_SheetActivateEventHandler(SheetActivate);
TheFile.XLBook.SheetActivate += SheetActivate;
}