Visio ウィンドウに一連のボタンを備えた独自のツールバーを作成する必要があります。次のコードは、ツールバーを生成し (機能します)、ボタンを作成し (機能します)、それらに Click イベント ハンドラーを割り当てます。
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 つのボタンのいずれか。
さらに、この行をスキップすると:
vsoButtonX2.Click += GlobalEvents.btnTest2Click;
「btnTestClick!」という単一のダイアログが表示されます。どのボタンでも。
少なくともコマンド バーにはクリック プロセッサが 1 つしかないようです。それは本当ですか?
PS: もちろん、「vsoButton」パラメーターとタグを使用してボタンが押されたことを検出できますが、別のイベント ハンドラーを使用する方が便利なようです...可能ですか?