powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / CommandBarButton.Click is not fired
4 сообщений из 4, страница 1 из 1
CommandBarButton.Click is not fired
    #34767643
another_user
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте,

я не могу добиться, чтоб было вызвано событие CommandBarButton.Click . В примере, который ниже, я подписываюсь на событие Click CommandBarButton'а "Создать". При нажатии на этот батон обработчик не вызывается.
Может, я что-то пропустил? буду очень признателен за идеи.
Я использую Excel 2003.
Вот мой код:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
    public partial class Form1 : Form
    {
        Excel.ApplicationClass excelApp;
        Office.CommandBarButton button;
        Microsoft.Office.Core.CommandBars commandBars;
        Microsoft.Office.Core.CommandBar commandBar;

        public Form1()
        {
            excelApp = new Excel.ApplicationClass();
            commandBars = excelApp.CommandBars;
            commandBar = commandBars["File"];
            button = (Office.CommandBarButton)commandBar.Controls[1];
            button.Tag = "my tagfa lasdf asdlfk jsaldfk jasld;jweorouwjlk";
            button.Click += new Office._CommandBarButtonEvents_ClickEventHandler(button_Click);
            excelApp.Visible = true;
        }

        void button_Click(Office.CommandBarButton Ctrl, ref bool CancelDefault)
        {
            CancelDefault = true;
            throw new Exception("The method or operation is not implemented.");
        }

        protected override void OnClosed(EventArgs e)
        {
            Marshal.ReleaseComObject(button);
            button = null;
            Marshal.ReleaseComObject(commandBar);
            commandBar = null;
            Marshal.ReleaseComObject(commandBars);
            commandBars = null;
            excelApp.Quit();
            Marshal.ReleaseComObject(excelApp);
            excelApp = null;
            base.OnClosed(e);
        }
    }
...
Рейтинг: 0 / 0
CommandBarButton.Click is not fired
    #34767912
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В явном виде такого обработчика нет. Есть св-во OnAction в котором хранится имя процедуры, вызываемой по нажатию на CommanBarButton. Чтобы узнать кто вызвал используйте Application.CommandBars.ActionControl .
...
Рейтинг: 0 / 0
CommandBarButton.Click is not fired
    #34768030
another_user
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
big-duke, спасибо за ответ.

Смотрим мсдн про свойство CommandBarControl.OnAction. Там сказано:
msdnCommandBarButton.OnAction Property
Gets or sets the name of a Visual Basic procedure that will run when the user clicks or changes the value of a CommandBarButton control. Read/write.

То есть вместо подписаться на CommandBarButton.Click событие пишнм так:
Код: plaintext
button.OnAction = "!<button_Click>";

и меняем метод button_Click следующующим образом:

Код: plaintext
1.
2.
3.
4.
void button_Click()
{
    MessageBox.Show("inside the event hadler");
}

однако, при нажатии на баттон не происходит вообще никаких действий - не выполняется действие, которое является действием по умолчанию и не выскакивают никакие ошибки.

И еще про событие CommandBarButton.Click: вот здесь описано, как добиться ожидаемой мной работы этого события. но, к сожалению, этот способ также не работает.

Есть идеи?

Спасибо,
Виталий
...
Рейтинг: 0 / 0
CommandBarButton.Click is not fired
    #34768490
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
button.OnAction = "!<button_Click>";
<button_Click> должен быть прописан внутри excel|word документа , а не во внешнем коде. Через VBIDE можно самому создавать код.

...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / CommandBarButton.Click is not fired
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]