Excel AddIn - Сохранение формы окна всегда видимым, пока ж / в Excel - PullRequest
5 голосов
/ 01 марта 2012

Прежде всего, спасибо за ваше время и помощь в рассмотрении этого! ...

Я пытаюсь обновить книгу 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)?

Спасибо !!!

Роб

1 Ответ

1 голос
/ 03 марта 2012

Вам следует взглянуть на Пользовательские панели задач , которые можно закрепить или разместить в приложении Excel.Вы также можете заглянуть в COM-интерфейсы для соединения более низкого уровня ( см. Соответствующую публикацию SO ) - хотя Панели задач действительно предназначены для такого типа поведениядля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...