3

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」パラメーターとタグを使用してボタンが押されたことを検出できますが、別のイベント ハンドラーを使用する方が便利なようです...可能ですか?

4

1 に答える 1

5

Visio はボタンをその... タグで区別します...

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

問題を解決します...私は質問を生きたままにしました、多分それはsmbに役立つでしょう...

于 2012-04-06T15:13:41.877 に答える