Как сделать вертикальную панель значков, как в Microsoft Teams

C#, .NET Framework 4.8, WinForms:

Я хочу создать вертикальную панель значков с тем же внешним видом, что и в Microsoft Teams (см. Рисунок). Так что наведение курсора, выделение, ярлыки и т. д. должны быть одинаковыми.

Какой из стандартных элементов управления лучше всего подходит для этого? Вы бы взяли TreeView? Или мне нужно сделать пользовательский элемент управления? Как это решается в MS Teams?

введите здесь описание изображения


person askolotl    schedule 05.01.2020    source источник
comment
Это было бы легко в WPF. Это вариант для вас? В WPF это будет TabView или что-то в этом роде.   -  person Stefan    schedule 05.01.2020
comment
Управление само по себе простое (просчитанная простота). Вы можете создать UserControl, подойдет пользовательский элемент управления. Самое сложное — повторить блик. В WinForms это можно воспроизвести с помощью LinearGradientBrush, к которому вы применяете цвет Blend. Элементы управления можно выровнять/организовать с помощью TableLayoutPanel (чтобы вы могли вставлять/удалять ячейки, чтобы определенная кнопка всегда оставалась в одном и том же положении).   -  person Jimi    schedule 05.01.2020
comment
С помощью UserControl переопределите методы OnEnter и OnLeave, чтобы перерисовать/показать цветную полосу слева и перерисовать/смешать выделение. Иконку можно добавить к этикетке (для прозрачности) или нарисовать прямо на поверхности. Использование метки проще и легче реализовать (используя свойства метки для выравнивания. Он также поддерживает двойную буферизацию сам по себе).   -  person Jimi    schedule 05.01.2020
comment
ToolStrip или некоторые другие параметры.   -  person Reza Aghaei    schedule 05.01.2020
comment
Если возможно использование другой технологии, ознакомьтесь с NavigationView, который входит в состав Элементы управления для приложений UWP.   -  person Reza Aghaei    schedule 05.01.2020
comment
@Jimi спасибо за ваш вклад. Я, наконец, реализовал его как простой UserControl (потому что это дает мне больше контроля;) ) - работает очень хорошо. Кстати, двойная буферизация поддерживается UserControl, без мерцания. Большой.   -  person askolotl    schedule 08.01.2020


Ответы (1)


Я понятия не имею, как это делается в командах MS, но что я должен сделать, я создаю собственное представление с селектором слева с состоянием видимости, поэтому, когда вы выбираете один из элементов, вы меняете цвет фона и делаете селектор виден на выбранном элементе. Это приведет к тому же дизайну, что и в MS Teams!

Я надеюсь, что вы можете начать работать над этим, просто спросите, если вы не можете что-то понять!

person A. Vreeswijk    schedule 05.01.2020
comment
Благодарю вас! А какой элемент управления вы бы взяли за основу пользовательского представления? В виде дерева? Посмотреть список? или другой? - person askolotl; 05.01.2020
comment
Я бы выбрал Grid, потому что я могу очень хорошо работать с Grid! Вы можете создать его во многих представлениях - person A. Vreeswijk; 05.01.2020
comment
хорошо, так что DataGridView ? - person askolotl; 05.01.2020
comment
Да, я бы использовал это! - person A. Vreeswijk; 05.01.2020