Прежде всего, спасибо за ваше время и помощь в рассмотрении этого! ...
Я пытаюсь обновить книгу Excel VBA до VSTO Excel Надстройка в VB.NET, используя VS2010. В исходной (то есть, VBA) версии у меня есть немодальная пользовательская форма (называемая frmMain
), которая плавает сверху и видна все время, пока пользователь все еще находится в приложении Excel, но не видна, если пользователь перемещаетсяв другое окно за пределами Excel.
Например, в Excel пользователь может щелкнуть любую вкладку рабочего листа, выбрать любую ячейку и т. д., и пользовательская форма по-прежнему отображается.Это именно то, как мне бы хотелось.
Проблема в том, что в новой надстройке VSTO я не могу заставить форму Windows имитировать такое же поведение.
Я используюfrmMain.Show()
, чтобы отобразить форму как немодальную форму, но в тот момент, когда пользователь нажимает на лист Excel ( т.е. активирует лист ), форма становится скрытой за листом.
Я могувручную Alt-Tab, чтобы вернуть форму в вид, но мне нужно, чтобы она всегда оставалась в поле зрения - плавающая поверх листов Excel, пока пользователь не покинул приложение Excel.
Я пыталсяразличные вещи, в том числе установка формы на TopMost
, что приводит к тому, что форма будет TopMost
везде - в том числе и за пределами Excel.Хуже того, если пользователь делает все, что обычно приводит к тому, что Excel запускает диалоговое окно ( например, закрывает открытую книгу, выдает предупреждение «Хотите сохранить изменения ...» ),Само диалоговое окно оповещения скрыто и недоступно за формой frmMain
(, поскольку frmMain
- это TopMost
).
Как мне заставить свою форму вести себя желаемым образом(т.е. так же, как в VBA)?
Спасибо !!!
Роб