Спільнота програмістів autodesk в співдружність незалежних держав

Як відключити Стрічку засобами .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;