C#操作Excel新添加右键菜单项的问题(Winform)
在做用代码控制Excel的功能。比如控制打开Excel之后,用代码将Excel右键菜单新增一项“aa”,并对其定义新的方法。
看代码:
-------------------
#endregion
#region Excel support code
public ContextMenu m_RMBContextMenu = null;
Excel.Application exApp = null;
Microsoft.Office.Core.CommandBarButton cbb = null;
Microsoft.Office.Core.CommandBar t = null;
public void NewWorkbook(Excel.Workbook Wb)
{
System.Diagnostics.Debug.WriteLine("NewWorkbook");
exApp = Wb.Application;
object type = 1;
object oMissing = System.Reflection.Missing.Value;
//find the cell menu and then disable all and then add the ones we want
int cnt =
(int)exApp.CommandBars.GetType().InvokeMember("Count", System.Reflection.BindingFlags.GetProperty, null, exApp.CommandBars, new object[] { });
for (int i = 1; i <= cnt; i++)
{
t =
(Microsoft.Office.Core.CommandBar)exApp.GetType().InvokeMember("CommandBars", System.Reflection.BindingFlags.GetProperty, null, exApp, new object[] { i });
if (t.Name == "Cell")
{
t.Reset();
for (int j = 1; j <= t.Controls.Count; j++)
t.Controls[j].Visible = false;
cbb =
(Microsoft.Office.Core.CommandBarButton)t.Controls.Add(type, oMissing, oMissing, oMissing, oMissing);
break;
}
}
cbb.Caption = "Hello";
cbb.Click += new
Microsoft.Office.Core._CommandBarButtonEvents_ClickEventHandler(cbb_Click);
}
private void cbb_Click(Microsoft.Office.Core.CommandBarButton Ctrl, ref bool CancelDefault)
{
Console.WriteLine("cbb_Click");
}
public void WorkbookBeforeClose(Excel.Workbook Wb, ref bool Cancel)
{
t.Reset(); //reset the menu
System.Diagnostics.Debug.WriteLine("WorkbookBeforeClose");
}
#endregion
-------------------
但近来遇到一个奇怪棘手的问题,受阻!!! 如下:
(Microsoft.Office.Core.CommandBarButton)t.Controls.Add(type, oMissing, oMissing, oMissing, oMissing);
//每次执行到这一句,代码就跳出了,也不提示出错,VBA中这句也没错,VSTO中也没错,就是在C#Winform中,执行完这句就跳出了。 而且浮动工具栏的新增不存在这个问题,仅仅针对右键菜单就出现这个问题!
高手指教!(代码来自微软官方技术支持)
相关推荐
C#_winform操作excel(打开、内嵌)
C#的WinForm中打开、内嵌EXCEL文档的简单例子。
C# Winform用户权限系统设计:从登录到角色权限与日志的完整实践
在企业级内部系统开发中,基于角色的访问控制(RBAC)是权限管理的基础模型,它将用户、角色与操作权限解耦,支持细粒度的按钮级控制。理解RBAC的原理有助于构建可扩展的安全体系。在C# Winform桌面应用里,权限管理不仅要实现用户登录,更要将用户创建、角色分配、操作权限设置及审计日志贯穿于数据库设计和界面交互中。通过合理的表结构、全局会话对象、动态控件权限回收及日志埋点,开发者可以构建一套可复用的用户权限管理模块,适用于MIS系统、进销存及后台管理工具。本文将分享从零搭建这套体系的关键思路与常见问题,帮助
C# WinForm仓库管理系统开发实战:从三层架构到SQL Server数据库设计
数据库管理系统是软件工程中用于持久化存储和操作数据的核心组件,其设计直接关系到应用的性能、安全性与可维护性。在桌面应用开发领域,C# WinForm凭借其成熟的控件库和高效的开发体验,常被用于构建中小型业务系统。结合经典的三层架构(UI、BLL、DAL),开发者能有效分离关注点,提升代码的可读性和可扩展性。以仓库管理系统为例,这类系统通过实现**入库管理**、**出库管理**、库存盘点与报表生成等核心功能,将传统手工流程数字化,显著提升了仓储作业的准确性与效率。其技术价值在于提供了一个完整、可独立部署的解决
C# WinForm仓库进销存系统源码:含SQL Server备份、角色登录、入库出库全流程与库存预警功能
这个C#开发的WinForm仓库管理系统,采用标准三层架构设计,后端基于SQL Server(附jxc_20160427.bak完整数据库备份),支持超级管理员和普通用户双角色登录,并内置3次输错密码自动退出的安全机制。系统涵盖员工、客户、供应商、仓库、单位、库存上下限等基础资料维护;入库支持成品/半成品/原材料/其他物资四类业务,流程包括申请、审核、生成带编码/规格/数量/单价/经办人/时间/供应单位等字段的正式单据;出库同样走申请-审核-填单流程,含领物单位等关键信息。库存模块可实时查库存、做盘点登记、
C# Winform NPOI操作Word Excel
C# Winform 程序,使用 NPOI操作Word和Excel,对Word中段落、表格等进行操作。对excel进行操作


