Click event on menu item is lost after first time firing of the event

  • Thread starter mayuresh.kasture
  • Start date
M

mayuresh.kasture

Hi,

I am using VSTO SE for excel development. I am trying to add menu
items to context menu. Well, I can add it but some how the menu item
loses the click event when it is clicked once i.e. click event handler
is invoked only once.

Here is the code fragment that adds menu item,

Office.CommandBarPopup Ctrl1;
Office.CommandBarButton Ctrl2, Ctrl3;

Ctrl1 =
(Office.CommandBarPopup)Application.CommandBars["Cell"].Controls.Add(Office.MsoControlType.msoControlPopup,
1, null, 1, true);
Ctrl1.Caption = "Menu Item";


Ctrl2 =
(Office.CommandBarButton)Ctrl1.Controls.Add(Office.MsoControlType.msoControlButton,
1, null, 1, true);
Ctrl2.Visible = true;
Ctrl2.Caption = "C# Test Button 1";
Ctrl2.Tag = "AddinTag1";
Ctrl2.Click += new
Office._CommandBarButtonEvents_ClickEventHandler(this.moBtn_Click);


Ctrl3 =
(Office.CommandBarButton)Ctrl1.Controls.Add(Office.MsoControlType.msoControlButton,
1, null, 1, true);
Ctrl3.Visible = true;
Ctrl3.Caption = "C# Test Button 2";
Ctrl3.Tag = "AddinTag2";
Ctrl3.Click += new
Office._CommandBarButtonEvents_ClickEventHandler(this.moBtn_Click1);

These are event handlers,

private void moBtn_Click(Office.CommandBarButton Ctrl, ref
bool CancelDefault)
{

MessageBox.Show(Ctrl.Tag);
Trace.Write("moBtn_Click - " + Ctrl.Tag);
}

private void moBtn_Click1(Office.CommandBarButton Ctrl, ref
bool CancelDefault)
{
MessageBox.Show(Ctrl.Tag);
Trace.Write("moBtn_Click - " + Ctrl.Tag);
}

Can anybody tell me what is happening here?

Thanks in advance
 
M

mayuresh.kasture

Hi,

I am using VSTO SE for excel development. I am trying to add menu
items to context menu. Well, I can add it but some how the menu item
loses the click event when it is clicked once i.e. click event handler
is invoked only once.

Here is the code fragment that adds menu item,

Office.CommandBarPopup Ctrl1;
Office.CommandBarButton Ctrl2, Ctrl3;

Ctrl1 =
(Office.CommandBarPopup)Application.CommandBars["Cell"].Controls.Add(Office­.MsoControlType.msoControlPopup,
1, null, 1, true);
Ctrl1.Caption = "Menu Item";

Ctrl2 =
(Office.CommandBarButton)Ctrl1.Controls.Add(Office.MsoControlType.msoContro­lButton,
1, null, 1, true);
Ctrl2.Visible = true;
Ctrl2.Caption = "C# Test Button 1";
Ctrl2.Tag = "AddinTag1";
Ctrl2.Click += new
Office._CommandBarButtonEvents_ClickEventHandler(this.moBtn_Click);

Ctrl3 =
(Office.CommandBarButton)Ctrl1.Controls.Add(Office.MsoControlType.msoContro­lButton,
1, null, 1, true);
Ctrl3.Visible = true;
Ctrl3.Caption = "C# Test Button 2";
Ctrl3.Tag = "AddinTag2";
Ctrl3.Click += new
Office._CommandBarButtonEvents_ClickEventHandler(this.moBtn_Click1);

These are event handlers,

private void moBtn_Click(Office.CommandBarButton Ctrl, ref
bool CancelDefault)
{

MessageBox.Show(Ctrl.Tag);
Trace.Write("moBtn_Click - " + Ctrl.Tag);
}

private void moBtn_Click1(Office.CommandBarButton Ctrl, ref
bool CancelDefault)
{
MessageBox.Show(Ctrl.Tag);
Trace.Write("moBtn_Click - " + Ctrl.Tag);
}

Can anybody tell me what is happening here?

Thanks in advance

Hey, problem is solved. Just declared Ctrl1,Ctrl2 and Ctrl3 as members
of class rather than local to the function.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top