Получение текущей вкладки / документа в DockPanel Suite

Я использую DockPanel Suite от Weifen Luo в небольшом проекте (веб-браузер), и мне удалось создать вкладки и перемещаться по элементу веб- браузера внутри каждой вкладки.

Но как я могу изменить название / название вкладки, когда страница переходит на другой сайт?

В основном мне просто нужно войти в текущую форму вкладок.

4 ответа

Решение

Поработав над этим несколько недель (но не до сих пор:P), я должен сказать, что в настоящее время это невозможно.

Вы можете получить текущую вкладку с помощью DockPanel's ActiveContent метод. Например:

Form myForm = myDockPanel.ActiveContent();
myForm.TabText = "Stack Overflow";

DockPanel.ActiveDocument а также DockPanel.ActivePane также может быть полезным.

Мне нужна была возможность проверить, какой документ был активным, и снова установить этот документ активным после изменения некоторых элементов пользовательского интерфейса, которые автоматически сбрасывают активную вкладку, поэтому я использовал некоторые фрагменты отсюда и FAQ по DockPanel, а также покопался, чтобы выяснить, ответ на эту проблему:

public string GetActive()
   { //Verify if forms that dock in main window are already open
      foreach (DockContent form in dockMain.Contents)
      {
         if (form.DockHandler.Pane.ActiveContent.DockHandler.Form.Name.ToString() == form.Name.ToString())
         {
            string formName = form.Name.ToString();
            return formName;
         }
      }
   return null;
   }

И тогда в каком-то другом методе вы будете вызывать:

string activeForm = GetActive();

Вы можете управлять своим собственным (предполагая, что ваша форма документа относится к определенному классу), управляя:

События FormClosing и Activated

"Активировано" установите свой собственный "активный" документ на "это". "FormClosing" устанавливает ваш собственный "активный" документ на ноль.

FormClosing просто для того, чтобы поймать случай, когда вы закрываете последний документ. Активированный - это то, что управляет всем остальным, например, когда новый документ создается и становится активным окном и т. Д.

Вы можете использовать статический глобал для управления фокусом. Тогда получите к нему доступ из любого места:

public partial class MyDocument : DockContent
{
   public static MyDocument ActiveDocument { get; private set; }
Другие вопросы по тегам