Як відключити Стрічку засобами .NET
Мені попався цікавий питання на форумі AutoCAD .NET. заданий Pete Elliott:
КогдаAutoCADзагружается, я бачу що мої панелі вимкнені (сірі) до того моменту, коли він не закінчить завантажуватися. Наша програма виконує додаткове завантаження даних після того, какAutoCADпопадает в стан «простою» .Але якщо користувач натисне одну з кнопок на панелі до того, як всі дані будуть завантажені, AutoCADаварійно завершить свою работу.Есть є спосіб відключити панелі (як це делаетAutoCAD) поки завантаження не виконана, а потім включити їх? Я не зміг найтіAPI, яке б дозволило це сделать.Пріму будь-які пропозиції з вдячністю!
Основний підхід досить простий: ви отримуєте доступ до поточного "Набору палітр Стрічки" за допомогою класу RibbonServices (ми викликаємо метод для створення нової Стрічки, але зазвичай він повертає існуючу Стрічку якщо викликається з команди). Потім ми використовуємо його, щоб відключити "Елемент управління Стрічки", а також його фонове відображення вкладок. Ми також відключимо відображення спливаючих підказок на той час, поки Стрічка відключена.
Ось C # -код, який вимикає і включає Стрічку за допомогою команд DR і ER відповідно. Ці команди просто показують як можна викликати функцію EnableRibbon () з вашого власного коду (ви визиваетеl EnableRibbon (false); перед початком ініціалізації і EnableRibbon (true); коли вона завершена).
public class Commands
private static bool _showTipsOnDisabled = false;
# 91; CommandMethod # 40; "DR" # 41; # 93;
public static void DisableRibbonCommand # 40; # 41;
EnableRibbon # 40; false # 41; ;
# 91; CommandMethod # 40; "ER" # 41; # 93;
public static void EnableRibbonCommand # 40; # 41;
EnableRibbon # 40; true # 41; ;
public static void EnableRibbon # 40; bool enable # 41;
// Для початку переконаємося, що Стрічка є
// (якщо функція викликається з команди, то в більшості випадків
// ми отримуємо існуючу Стрічку)
var rps = Autodesk. AutoCAD. Ribbon. RibbonServices. CreateRibbonPaletteSet # 40; # 41; ;
// Включаємо або вимикаємо її
rps. RibbonControl. IsEnabled = enable;
if # 40 ;. enable # 41;
// Зберігаємо поточний стан "Показувати підказки коли Стрічка виключена"
// і міняємо її значення
_showTipsOnDisabled = ComponentManager. ToolTipSettings. ShowOnDisabled;
ComponentManager. ToolTipSettings. ShowOnDisabled = enable;
// відновлюємо значення "Показувати підказки коли Стрічка виключена"
ComponentManager. ToolTipSettings. ShowOnDisabled = _showTipsOnDisabled;
// Включаємо або вимикаємо фонове відображення вкладок
rps. RibbonControl. IsBackgroundTabRenderingEnabled = enable;