Outlook Banter

Outlook Banter (http://www.outlookbanter.com/)
-   Add-ins for Outlook (http://www.outlookbanter.com/add-ins-outlook/)
-   -   How to delete the controls in a CommandBarPopup? (http://www.outlookbanter.com/add-ins-outlook/95902-how-delete-controls-commandbarpopup.html)

Teodora Gancheva[_2_] October 12th 09 10:25 AM

How to delete the controls in a CommandBarPopup?
 
Hi,
I am developing a C# COM add-in for MS Office 2003 and 2007. My add-in
creates a custom command bar with a CommandBarPopup menu containing several
CommandBarPopup submenus populated with CommandBarButton objects. Upon user
click on some buttons, I'd like to perform 'refresh' on the submenus i.e.
delete the buttons and re-create them.
I am doing so using the following code:
for (int index = 1; index = popup.Controls.Count; index++)
{
popup.Controls[index].Delete(1);
index--;
}
This works for all buttons except the one that was actually clicked, for it
a COMException with message "Error HRESULT E_FAIL has been returned from a
call to a COM component" is thrown. Am I not allowed to delete this button
because it has just been clicked, and what other options do I have - delete
the whole popup?
Thanks for all advice,
Teodora Gancheva

Ken Slovak - [MVP - Outlook] October 12th 09 02:33 PM

How to delete the controls in a CommandBarPopup?
 
It would be logical that you couldn't delete a button during its Click()
event. Think about it.

If you really want to do what you're doing then set a timer in the Click()
event that will fire after that event is completed, then do your refresh in
the timer event handler. Just make sure the timer thread is the same or
marshalled to the main thread.

--
Ken Slovak
[MVP - Outlook]
http://www.slovaktech.com
Author: Professional Programming Outlook 2007.
Reminder Manager, Extended Reminders, Attachment Options.
http://www.slovaktech.com/products.htm


"Teodora Gancheva" wrote in
message ...
Hi,
I am developing a C# COM add-in for MS Office 2003 and 2007. My add-in
creates a custom command bar with a CommandBarPopup menu containing
several
CommandBarPopup submenus populated with CommandBarButton objects. Upon
user
click on some buttons, I'd like to perform 'refresh' on the submenus i.e.
delete the buttons and re-create them.
I am doing so using the following code:
for (int index = 1; index = popup.Controls.Count; index++)
{
popup.Controls[index].Delete(1);
index--;
}
This works for all buttons except the one that was actually clicked, for
it
a COMException with message "Error HRESULT E_FAIL has been returned from a
call to a COM component" is thrown. Am I not allowed to delete this button
because it has just been clicked, and what other options do I have -
delete
the whole popup?
Thanks for all advice,
Teodora Gancheva




All times are GMT +1. The time now is 12:35 PM.

Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 2.4.0
Copyright ©2004-2006 OutlookBanter.com