2010-12-15 4 views
1

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

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

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

ответ

0

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

6

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

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

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

0

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

«FormClosing» и «Активированные» события

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

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

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

public partial class MyDocument : DockContent 
{ 
    public static MyDocument ActiveDocument { get; private set; } 
0

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

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(); 
Смежные вопросы