カスタム作業ウィンドウで Excel アドインを作成しようとしています。このチュートリアルに従って、ユーザーがリボンのカスタム ボタンをクリックしたときに 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);
}
リボン.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)
{
}
}
この質問を確認し、他のすべてのアドインを無効にしましたが、それでも機能しませんでした。
デバッグ中にブレークポイントを設定するbtnPullData_Click
と、表示されていないときに例外がスローされることに気付きました。これが2つのスクリーンショットです。
ペインが正しく読み込まれる (メッセージ ボックスが有効になっている)
ペインが読み込まれない (メッセージ ボックスがない)
完全な例外テキスト:
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
を追加すると一時的に問題が解決する方法がわかりません。
編集:タイトルを変更しました