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

  • Thread starter Thread starter mayuresh.kasture
  • Start date 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
 
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.
 
Back
Top