跟踪添加和删除的工作表

我正在做一个Excel插件,并且遇到了障碍。

我想用Excel工作簿中的工作表来更新combobox。 目前我能用foreach循环做到这一点。 然而,这是有限的,只是在我运行它的时候才拿起加或减的表单。 我的插件看起来俗气的“刷新表”button,我想避免这种情况,如果可能的话。

理想情况下,我可以将工作表对象绑定到combobox,以便在没有我的干预的情况下即时更新。 但是,我的研究发现,它不支持。 我还没有尝试过,因为我不在我的开发电脑前,直到后来,但我几乎积极,因为它不会inheritanceIList它不会作为一个数据源工作。

有没有人做过类似的事情? 我真的很想让这件事情正常工作。

谢谢!

Excel.Application对象有一个WorkbookNewSheet事件,当添加新工作表时触发。 不幸的是,当工作表被移除时,似乎没有事件发生。

您可以将combobox更新代码放在combobox的DropDown事件中。 它会在combobox打开时触发,并且您的代码可以在列表可见之前更新combobox项目。

我喜欢沃伦的下拉事件的想法。 如果这样工作似乎理想。 否则,我build议使用工作簿的Sheet_Activate事件。 这会在创build或删除图纸时触发,至less如果是由用户完成的。

在C#中,您需要实例化事件并创build一个处理程序。 你可以在Form_Load事件中做到这一点,这样当表单被实例化时,事件处理程序就被创build了。 您需要设置对Interop.Excel的引用,以便您的Form.cs代码如下所示:

所以,你的Form_Load事件看起来像这样:

 using Excel = Microsoft.Office.Interop.Excel; namespace ExcelWorkbook1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { Globals.ThisWorkbook.SheetActivate += new Excel.WorkbookEvents_SheetActivateEventHandler( ThisWorkbook_SheetActivate); } private void ThisWorkbook_SheetActivate(object Sh) { //Fill your combobox here } } } 

编辑:我发现在这个MSDN网站的基本代码。