Получение текущей вкладки / документа в 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; }