Мне нужно создать собственную панель инструментов с набором кнопок в окне 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!». На любой из двух кнопок.
Кроме того, если я пропущу эту строку: "btnTestClick"
vsoButtonX2.Click += GlobalEvents.btnTest2Click;
Я вижу единственный диалог на любой кнопке.
Кажется, что он имеет только один процессор кликов, по крайней мере, для командной строки. Это правда?!
PS: Конечно, я могу использовать параметр «vsoButton» и теги для обнаружения нажатия кнопки wht, но кажется более удобным использовать разные обработчики событий ... Это возможно?