2012-04-06 4 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!». На любой из двух кнопок.

Кроме того, если я пропущу эту строку: "btnTestClick"

vsoButtonX2.Click += GlobalEvents.btnTest2Click; 

Я вижу единственный диалог на любой кнопке.

Кажется, что он имеет только один процессор кликов, по крайней мере, для командной строки. Это правда?!

PS: Конечно, я могу использовать параметр «vsoButton» и теги для обнаружения нажатия кнопки wht, но кажется более удобным использовать разные обработчики событий ... Это возможно?

ответ

4

Визио различать кнопки их ... TAGS ...

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

решает вопрос ... Я оставил вопрос жив, может быть, это поможет кому-л ...

Смежные вопросы