跟踪添加和删除的床单



我正在研究Excel Addin,并遇到了障碍。

我希望在Excel工作簿中使用床单更新Combobox。目前,我可以使用一个foreach循环进行此操作。但是,从某种意义上说,这仅在我运行时才添加或减去床单。我的addin看起来像"刷新床单"按钮看起来很粘,我想避免使用。

理想情况下,我能够将工作表对象数据宾语数据列为ComboBox,以便在不干预的情况下进行更新。但是,我的研究表明,它不支持这一点。我还没有尝试过,因为我直到稍后才在开发计算机的面前,但是我几乎是肯定的,因为它没有继承iList,它无法用作数据源。

有人做过类似的事情吗?我真的很想让这个东西正确。

谢谢!

excel.application对象具有 WorkbookNewSheet事件,该事件在添加新表时会发射。不幸的是,删除工作表时似乎没有发射的事件。

您可以将Combobox Update代码放在Combobox的DropDown事件中。它会随着ComboBox打开而发射,并且您的代码可以在可见列表之前更新Combobox项目。

我喜欢沃伦(Warreng)关于下拉事件的想法。如果有效,它似乎是理想的。否则,我建议您使用Workbook的Sheet_activate事件。当创建或删除床单时,这将发射,至少是用户完成的。

在C#中,您需要实例化事件并创建一个处理程序。您实际上可以在form_load事件中执行此操作,以便在实例化表单后创建事件处理程序。您需要将引用设置为Interop.excel。

所以,您的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网站上找到了基本代码。

最新更新