【发布时间】:2011-05-25 20:41:12
【问题描述】:
我在一个小项目(webbrowser)中使用 Weifen Luo 的 DockPanel Suite,并设法创建标签并在每个标签内导航 webbrowser 元素。
但是当页面导航到另一个站点时,我如何更改标签标题/名称?
基本上我只需要进入当前标签表单。
【问题讨论】:
我在一个小项目(webbrowser)中使用 Weifen Luo 的 DockPanel Suite,并设法创建标签并在每个标签内导航 webbrowser 元素。
但是当页面导航到另一个站点时,我如何更改标签标题/名称?
基本上我只需要进入当前标签表单。
【问题讨论】:
您可以使用 DockPanel 的ActiveContent 方法获取当前选项卡。例如:
Form myForm = myDockPanel.ActiveContent();
myForm.TabText = "Stack Overflow";
DockPanel.ActiveDocument 和 DockPanel.ActivePane 也很有用。
【讨论】:
在做了几个星期之后(虽然不是'直到现在:P)我不得不说,这目前是不可能的。
【讨论】:
您可以通过以下方式管理您自己的(假设您的 Document Form 是一个特定的类):
“FormClosing”和“Activated”事件
'Activated' 将您自己的“活动”文档设置为“this”。 'FormClosing' 将您自己的“活动”文档设置为 null。
FormClosing 只是为了捕捉您关闭最后一个文档的情况。激活是管理其他一切的东西,例如当一个新文档被创建并成为活动窗口等时。
您可以使用静态全局来管理焦点。然后从其他任何地方访问它:
public partial class MyDocument : DockContent
{
public static MyDocument ActiveDocument { get; private set; }
【讨论】:
我需要能够检查哪个文档处于活动状态,并在更改一些自动重置活动选项卡的 UI 元素后再次将该文档设置为活动状态,因此我使用了这里的一些片段和 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();
【讨论】: