2012-04-06 14 views
3

Visioウィンドウのボタンのセットを使用して独自のツールバーを作成する必要があります。次のコードはツールバーを生成し(動作します)、ボタンを作成し(動作します)、Clickイベントハンドラを割り当てます。CommandBarButtonいくつかのボタンのイベントをクリックします。

vsoCommandBar = vsoCommandBars.Add("MyCommandBat", Office.MsoBarPosition.msoBarTop, false, true); 

var vsoButtonX1 = (Office.CommandBarButton)vsoCommandBar.Controls.Add(
    Office.MsoControlType.msoControlButton, 1, 2, 1, false); 
vsoButtonX1.Caption = "Test1"; 
vsoButtonX1.Tag = ""; 
vsoButtonX1.Click += GlobalEvents.btnTestClick; 

var vsoButtonX2 = (Office.CommandBarButton)vsoCommandBar.Controls.Add(
    Office.MsoControlType.msoControlButton, 1, 2, 2, false); 
vsoButtonX2.Caption = "Test2"; 
vsoButtonX2.Tag = ""; 
vsoButtonX2.Click += GlobalEvents.btnTest2Click; 

ハンドラは単純ですが、もちろん(もちろん)異なります。

public void btnTestClick(Office.CommandBarButton vsoButton, ref bool cancelDefault) 
{ 
    MessageBox.Show("btnTestClick!"); 
} 

public void btnTest2Click(Office.CommandBarButton vsoButton, ref bool cancelDefault) 
{ 
    MessageBox.Show("btnTest2Click!"); 
} 

ボタンをクリックすると、「btnTestClick!」というダイアログが表示されます。 「btnTest2Click!」で「OK」ダイアログを押した後に表示されます。 2つのボタンのいずれか。

また、私はこの行を飛ばした場合: "!btnTestClick" 私は、単一のダイアログが表示されます

vsoButtonX2.Click += GlobalEvents.btnTest2Click; 

をどのボタンでも。

コマンドバーには少なくとも1つのクリックプロセッサしかないようです。それは本当ですか?

PS:もちろん、私は "vsoButton"パラメータとタグを使ってwhtボタンが押されたことを検出できますが、別のイベントハンドラを使う方がより便利です...可能でしょうか?

答えて

4

Visioはその... TAGSでボタンを区別...

vsoButtonX1.Tag = "1"; 
vsoButtonX2.Tag = "2"; 

は、問題を解決し...私は

...多分それは、SMBに役立つだろう、生きている疑問を残しました
関連する問題