Excel 任务窗格未显示
Excel Task Pane Not Showing
我正在尝试创建带有自定义任务窗格的 Excel Add-In。我已经关注 this tutorial 希望在用户单击功能区上的自定义按钮时显示 Windows 表单控件。但是,我唯一一次可以显示窗格是在 This_AddIn_Startup
事件上添加测试消息框时。这是相关代码:
ThisAddIn.cs
private InputControl myInputControl { get; set; }
private Microsoft.Office.Tools.CustomTaskPane myCustomTaskPane {get;set;}
public CustomTaskPane TaskPane
{
get
{
return myCustomTaskPane;
}
}
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
MessageBox.Show("loading"); //If I comment this out, task pane won't show
myInputControl = new InputControl();
try
{
myCustomTaskPane = this.CustomTaskPanes.Add(myInputControl, "Test Task Pane");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
myCustomTaskPane.VisibleChanged +=
new EventHandler(myCustomTaskPane_VisibleChanged);
}
Ribbon.cs
public partial class Ribbon
{
private void Ribbon_Load(object sender, RibbonUIEventArgs e)
{
}
private void btnPullData_Click(object sender, RibbonControlEventArgs e)
{
Globals.ThisAddIn.TaskPane.Visible = true;
}
private void txtPosition_TextChanged(object sender, RibbonControlEventArgs e)
{
}
}
我检查了 this question 并禁用了所有其他 add-ins 但仍然没有用。
在调试时,如果我在 btnPullData_Click
上放置了一个断点,并注意到当它没有显示时会抛出一个异常。这是两个屏幕截图。
窗格正确加载(启用消息框)
窗格未加载(无消息框)
完整的异常文本:
base = {System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
at Microsoft.Office.Core._CustomTaskPane.get_Window()
at Microsoft.Office.Tools.CustomTaskPaneImpl.get_Window()}
我是编写 C# 的新手,我该如何解决该异常?我不明白如何添加 MessageBox
暂时解决问题。
编辑:更改标题
我一直不明白为什么我的任务窗格在从头开始创建时不显示。但是,使用 VSTO Contrib 我能够使用 Excel 演示项目作为模板并在需要的地方插入我自己的代码。自定义窗格现在每次都可以在 Excel 内轻松显示。
有助于入门的视频here.
我正在尝试创建带有自定义任务窗格的 Excel Add-In。我已经关注 this tutorial 希望在用户单击功能区上的自定义按钮时显示 Windows 表单控件。但是,我唯一一次可以显示窗格是在 This_AddIn_Startup
事件上添加测试消息框时。这是相关代码:
ThisAddIn.cs
private InputControl myInputControl { get; set; }
private Microsoft.Office.Tools.CustomTaskPane myCustomTaskPane {get;set;}
public CustomTaskPane TaskPane
{
get
{
return myCustomTaskPane;
}
}
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
MessageBox.Show("loading"); //If I comment this out, task pane won't show
myInputControl = new InputControl();
try
{
myCustomTaskPane = this.CustomTaskPanes.Add(myInputControl, "Test Task Pane");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
myCustomTaskPane.VisibleChanged +=
new EventHandler(myCustomTaskPane_VisibleChanged);
}
Ribbon.cs
public partial class Ribbon
{
private void Ribbon_Load(object sender, RibbonUIEventArgs e)
{
}
private void btnPullData_Click(object sender, RibbonControlEventArgs e)
{
Globals.ThisAddIn.TaskPane.Visible = true;
}
private void txtPosition_TextChanged(object sender, RibbonControlEventArgs e)
{
}
}
我检查了 this question 并禁用了所有其他 add-ins 但仍然没有用。
在调试时,如果我在 btnPullData_Click
上放置了一个断点,并注意到当它没有显示时会抛出一个异常。这是两个屏幕截图。
窗格正确加载(启用消息框)
窗格未加载(无消息框)
完整的异常文本:
base = {System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
at Microsoft.Office.Core._CustomTaskPane.get_Window()
at Microsoft.Office.Tools.CustomTaskPaneImpl.get_Window()}
我是编写 C# 的新手,我该如何解决该异常?我不明白如何添加 MessageBox
暂时解决问题。
编辑:更改标题
我一直不明白为什么我的任务窗格在从头开始创建时不显示。但是,使用 VSTO Contrib 我能够使用 Excel 演示项目作为模板并在需要的地方插入我自己的代码。自定义窗格现在每次都可以在 Excel 内轻松显示。
有助于入门的视频here.