我使用ExcelDNA,NetOffice和C#在Excel工作表中创建了几个DropDowns。下拉列表显示正确,但我无法弄清楚每次更改选择时如何绑定事件。正如您所注意到的那样,我按照此处的建议绑定到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);
}
答案 0 :(得分:1)
您使用的控件类型 - XlFormControl.xlDropDown
- 不提供处理事件的任何解决方案。相反,您应该使用OleObject
控件。这是一个代码片段,可以作为一个起点:
var combobox1 = currentSheet.Shapes.AddOLEObject(ClassType:="Forms.ComboBox.1",...
有关详细信息,请参阅this link。
接下来,您应该尝试添加ComboBox1_Change()
事件。