Использование всплывающих подсказок в надстройке Revit
Вопрос: Кто-нибудь знает можно ли использовать строку состояния для отображения своих собственных сообщений в любой момент? И если можно, то как?
Когда пользователю предлагается выбрать элементы или некую область, то строку состояния можно довольно легко задействовать:
- IList<Element> PickSelection
- = sel.PickElementsByRectangle(
- "Выберите элементы" );
Но я хочу использовать строку состояния, чтобы подсказать пользователю, что некое действие завершилось. Использовать назойливые окна сообщений для этого очень не хочется.
Может есть такой метод, типа StatusPrompt.Show(“Действие завершено”)?
Ответ: Ранее мы уже обсуждали как можно отобразить текст в строке состояния с помощью функций WinAPI.
С другой стороны, если вы хотите просто отобразить сообщение, при это не блокировать интерфейс пользователя и не требовать от него дополнительных действий, то можно использовать всплывающие подсказки.
Для этого сначала добавьте сборку AdWindows.dll к вашему проекту в Visual Studio. Сборка находится в то же папке, где и RevitAPI.dll.
Затем, можно создать вот такой вот статический метод:
- public static void ShowBalloonTip(
- string category,
- string title,
- string text)
- {
- Autodesk.Internal.InfoCenter.ResultItem ri
- = new Autodesk.Internal.InfoCenter.ResultItem();
- ri.Category = category;
- ri.Title = title;
- ri.TooltipText = text;
- // Не обязательный параметр: URL с дополнительной информацией
- ri.Uri = new System.Uri(
- "http://www.adn-cis.org");
- ri.IsNew = true;
- // Также можно добавить обработку события нажатия на подсказку
- ri.ResultClicked += new EventHandler<
- Autodesk.Internal.InfoCenter.ResultClickEventArgs>(
- ri_ResultClicked);
- Autodesk.Windows.ComponentManager
- .InfoCenterPaletteManager.ShowBalloon(ri);
- }
- private static void ri_ResultClicked(
- object sender,
- Autodesk.Internal.InfoCenter.ResultClickEventArgs e)
- {
- // что-то сделаем при нажатии на подсказку
- }
- }
Результат:
Но помните, что использование сборки AdWindows.dll официально не поддерживается.
Но учитывая то, что AutoCAD также содержит свою версию этой библиотеки, и она официально поддерживается и используется разработчиками надстроек к AutoCAD, например, как описано в теме API по работе с лентой в AutoCAD 2009, то судя по всему мы на верном пути.
P.S. В сплывающей подсказке задействовано только свойство Category и Title, adn-cis.org и adn-cis.org в примере. Text так и не отображается в подсказке.
Источник: http://thebuildingcoder.typepad.com/blog/2014/03/using-balloon-tips-in-revit.html
Обсуждение: http://adn-cis.org/forum/index.php?topic=629
Опубликовано 23.03.2014Отредактировано 02.04.2014 в 21:32:53