放置在Excel内的下拉列表事件

本文关键字:下拉列表 事件 Excel | 更新日期: 2023-09-27 18:01:32

我正在使用ExcelDNA, NetOffice和c#在Excel工作表中创建几个下拉列表。下拉框显示正确,但我不知道如何绑定事件每次选择改变。正如你在下面注意到的,我是按照这里的建议绑定到SheetChange事件http://www.c-sharpcorner.com/uploadfile/vasanthks/excel-dropdownlist-change-event-using-vba/任何帮助都会很感激。

for (int i = 1; i < col + 1; i++)
{
      var comboRange = ActiveSheet.Cells[2, i];
            var combobox1 = currentSheet.Shapes.AddFormControl(XlFormControl.xlDropDown,
                Convert.ToInt32(comboRange.Left), Convert.ToInt32(comboRange.Top), Convert.ToInt32(comboRange.Width), Convert.ToInt32(comboRange.Height));
            combobox1.Name = "cmb_" + i;
            combobox1.Placement = XlPlacement.xlMoveAndSize;
            combobox1.ControlFormat.DropDownLines = 1;
            combobox1.ControlFormat.AddItem("Item1", 1);
            combobox1.Application.SheetChangeEvent += new Excel.Application_SheetChangeEventHandler(ComboBox_Changed);
        }
    }

    private void ComboBox_Changed(object sender, Excel.Range rng)
    {
        MessageBox.Show("Test", "Error",
                MessageBoxButtons.OK, MessageBoxIcon.Error);
    }

放置在Excel内的下拉列表事件

您使用的控件类型- XlFormControl.xlDropDown -不提供处理事件的任何解决方案。相反,你应该使用OleObject控制。下面是一个可以作为起点的代码片段:

var combobox1 = currentSheet.Shapes.AddOLEObject(ClassType:="Forms.ComboBox.1",...

有关更多信息,请参阅此链接。接下来,您应该尝试添加ComboBox1_Change()事件。

相关文章: