I work on an Excel add-in product that contains a task pane that has multiple User Controls on it. We have moved our login process from a modal UserForms dialog to a WebBrowser control that is displayed within the Task Pane when the user clicks our Login ribbon button.
The desired behavior flow would be:
- user clicks a Login button on the Ribbon - the Login control is shown in Task Pane
- until there is a result of login (login succeeded, login failed, or user cancels login), the user could not use excel as though a modal login dialog is being displayed
- Once logged in or login is cancelled, user can use Excel again.
In other words, I want the Task Pane control to work like a modal dialog.
I have the login control working great, however I do not know a way to have it simulate being modal. Once the user clicks the Login button, they are free to continue working in Excel, which we do not want.
I have been pondering some ugly solutions like trying to prevent each window within Excel from redrawing using WM_SETREDRAW with SendMessage and also tying LockWindowUpdate, but I was really hoping that someone would know a better way to accomplish what I was trying to do.
Btw, this type of functionality will not only be used for the login control or we might just go ahead and put it in a modal dialog. We are also wanting to do the same with a couple of other controls where we want the user to have to use the control before we allow them to continue in Excel.