DockPanelSuite's DockState и AutoHide

Работая с DockState и AutoHide, я ищу следующие вещи:

  1. Узнайте, находится ли DockContent в режиме AutoHide
  2. Возможность переключения между "обычным" и автоматическим режимом.
  3. Инициируйте событие, когда появится док-панель AutoHide.
  4. Инициируйте событие, когда док AutoHide "ушел" и теперь пристыкован обратно на свою вкладку.

Ответ Вики:

  1. IsAutoHide - получить:

    private WeifenLuo.WinFormsUI.Docking.DockState[] AutoHideStates = new WeifenLuo.WinFormsUI.Docking.DockState[] {
        WeifenLuo.WinFormsUI.Docking.DockState.DockBottomAutoHide,
        WeifenLuo.WinFormsUI.Docking.DockState.DockLeftAutoHide,
        WeifenLuo.WinFormsUI.Docking.DockState.DockRightAutoHide,
        WeifenLuo.WinFormsUI.Docking.DockState.DockTopAutoHide };
    
    public bool IsAutoHide { get { return AutoHideStates.Contains(DockContent.DockState); } }
    
  2. IsAutoHide - установить: кода пока нет - в основном перебирайте режимы или используйте словарь взаимозаменяемых режимов (т.е. DockBottomAutoHide to DockBottom)

  3. Я понятия не имею, но это выглядит интересно, возможно, есть идея.

  4. Я понятия не имею.

1 ответ

Решение

1 - достойный способ сделать это. В библиотеке есть внутренний метод, DockHelper.IsDockStateAutoHide() это в основном то же самое. Это должно быть на самом деле сделано в публичном методе расширения и включено как часть библиотеки.

2 Ваше решение хорошо.

3 и 4, вероятно, лучше всего реализовать в качестве нового события в DockPanel: ActiveAutoHideContentChanged, Затем вы можете самостоятельно отслеживать последнее содержимое автоматического скрытия, и когда возникает событие, вы знаете, что #3 происходит, если новое значение не равно NULL, и #4 происходит, если последнее известное значение не было NULL.

Не стесняйтесь открыть запрос на GitHub, чтобы добавить событие.

Другие вопросы по тегам