Страницы: 1
RSS
Надстройки Excel, Скрытие кнопки
 
Доброго времени. Создаю надстройку для Excel 2016 на языке vb.net . По нажатии кнопки с формы, как скрыть кнопку на активной ленте? В событии "Ribbon_Load" понятно. Там без проблем. Но когда лента активна скрыть ничего нельзя. Подскажите. Был на оф. сайте msdn, лопатил ютуб, пытался понять принцип на XLtools надстройке, там вроде все элементы ленты при открытии не модальной формы становятся неактивными, а потом, полагаю, просто перерисовываются.. Как это сделать
 
Доброе время суток
Если вы сохранили ссылку на Ribbon просто вызовите IRibbonUI.InvalidateControl(ControlId), а для кнопки на ленте пропишите для getVisible метод обработчик. Плюс, флаг скрывать ли кнопку. Почитайте.
Успехов.
 
Андрей VG, спасибо, но туповат Я что-то
 
Андрей VG, а нет, не догадался(
Изменено: En_Oane - 26.01.2017 08:36:00 (не догадался)
 
Андрей VG, помогите разобраться пожалуйста, никак не пойму
Код
                ftp_Resp_Createfolder = CType(ftp_CreateFolder.GetResponse(), FtpWebResponse) 'ответ с сервера если ок то

                My.Settings.user_name = txt_firstName.Text
                My.Settings.user_password = txt_pass.Text
                My.Settings.authentication = True
                My.Settings.Save()

                'тут надо скрыть кнопку с ленты!!

                Me.Close()
.  
 
Допустим у вас с customUI.xml прописано
Код
<ribbon onLoad="Ribbon_OnLoad">
...
<button id="ftpActionButton" onAction="ftpActionButton_Click" getVisible="ftpActionButton_GetVisible" />

Есть класс для обслуживания вашей ленты

Код
Public NotInheritable Class MyRibbonHandler

Private Shared FRibbon As IRibbonUI
Public Shared ftpActionVisible As Boolean = True

Public Shared Sub Ribbon_OnLoad(ByVal thisRibbon IRibbonUI)
   FRibbon = thisRibbon
End Sub

Public Shared Function ftpActionButton_GetVisible(ByVal thisButton As IRibbonControl) As boolean
    ftpActionButton_GetVisible = ftpActionVisible
End Sub

Public Shared Sub RefreshControl(ByVal ById As String)
    FRibbon.InvalidateControl(ById)
End Sub
End Class

В вашем коде для скрытия кнопки ftpActionButton

Код
MyRibbonHandler.ftpActionVisible = False
MyRibbonHandler.RefreshControl("ftpActionButton")

Успехов.
 
Андрей VG, задам, наверное, глупый вопрос, но то, что у меня лента не на XMl написана, роль играет?
 
Цитата
En_Oane написал:
не на XMl написана
Если вы делаете с использованием VSTO, так там ещё проще. Проходитесь по цепочке ссылок от корневого Ribbon. Я просто давно уже на VSTO не делал, точно не скажу. Почитайте. В принципе, подход тот же самый, как в Excel через Application, Workbooks, Worksheets
 
Название темы должно отражать суть задачи.Уточните, сецйчас очень общее.  Предложите новое. Модераторы переименуют тему.
 
Вот ответ. На раз два)

https://msdn.microsoft.com/ru-ru/library/bb772088.aspx
 
En_Oane, на раз два - предложите нормальное название темы
Страницы: 1
Наверх