- - PR -
Visual Stuido 2008 アドインの作成
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2008-11-01 12:36
こんにちわ。
今Visual Studio 2008向けのアドインを作成してみています。 目標:「ソリューションエクスプローラ」の中でプロジェクトファイルの上で右クリックメニューに「TestButton」というボタンを追加したいです。 言語:C# もう1日かけて、解決できなかったので、皆様の知恵をいただきたいです、よろしくお願いいたします。 下記のような実装コードを書いて、ボタンがちゃんと表示されますが、クリックイベントが反応しません //OnConnection実装 public void OnConnection(... 省略...) { _applicationObject = (DTE2)application; _addInInstance = (AddIn)addInInst; if(connectMode == ext_ConnectMode.ext_cm_UISetup) { CommandBar cmdbar = ((CommandBars)_applicationObject.CommandBars)["Project"]; CommandBarButton button = (CommandBarButton)cmdbar.Controls.Add(MsoControlType.msoControlButton, Type.Missing, Type.Missing, 1, true); button.Caption = "TestButton"; button.OnAction = "'button_ClickOnAction'"; button.Click += new _CommandBarButtonEvents_ClickEventHandler(button_Click); } } //イベントの紐づけ private void button_Click(CommandBarButton Ctrl, ref bool CancelDefault) { System.Windows.Forms.MessageBox.Show("test"); } ちなみに、今私書いたソースコードを修正しなくても、別の方法でも構いませんので、どなた助けていただけませんか>< よろしくお願いいたします。 |
|
投稿日時: 2008-12-06 21:30
初めまして。
koyakと申します。 既に一ヶ月以上経過してしまっていますが ご容赦下さい。 らりるれろさんが作成したbuttonを OnConnectionが定義されているクラス (Connectクラス)にインスタンス変数として 持たせてみて下さい。 (CommandBarControl型の変数、またはそのリストで定義) インスタンス変数として作成したコントロールを 保持していないと、表示はされるものの イベント等が呼ばれなくなってしまうようです。 例) public class Connect : IDTExtensibility2, IDTCommandTarget { private IList<CommandBarControl> _commandBarControls; (中略) // ↓(らりるれろさんが実装しているOnConnectionメソッドの中) button.Caption = "TestButton"; button.OnAction = "'button_ClickOnAction'"; button.Click += new _CommandBarButtonEvents_ClickEventHandler(button_Click); _commandBarControls.Add(button); (省略) } |
1