C# 制作选项卡式cef sharp浏览器重命名选项卡页面
我一直在用C#创建一个浏览器。我已经做了,这样你就可以有多个标签,它加载页面正确。但是,我似乎无法找到如何将选项卡重命名为页面名称 这是form1.cs加载事件中的代码:C# 制作选项卡式cef sharp浏览器重命名选项卡页面,c#,cefsharp,C#,Cefsharp,我一直在用C#创建一个浏览器。我已经做了,这样你就可以有多个标签,它加载页面正确。但是,我似乎无法找到如何将选项卡重命名为页面名称 这是form1.cs加载事件中的代码: Cef.Initialize(); toolTip1.SetToolTip(button1, "Settings"); TabPage tab = new TabPage(); Tab newtab = new Tab();
Cef.Initialize();
toolTip1.SetToolTip(button1, "Settings");
TabPage tab = new TabPage();
Tab newtab = new Tab();
newtab.Show();
newtab.TopLevel = false;
newtab.Dock = DockStyle.Fill;
tab.Controls.Add(newtab);
tabControl1.TabPages.Add(tab);
我试过:
private void myBrowser_isLoading(object sender)
{
myBrowser.Parent.Parent.Text = myBrowser.Title;
}
但这不起作用
这是tab.cs的代码:
public Tab()
{
InitializeComponent();
// Start the browser after initialize global component
InitializeChromium();
}
public CefSharp.WinForms.ChromiumWebBrowser myBrowser;
public bool nav = new bool();
public void InitializeChromium()
{
myBrowser = new CefSharp.WinForms.ChromiumWebBrowser("http://www.google.com");
this.Controls.Add(myBrowser);
myBrowser.Dock = DockStyle.Fill;
myBrowser.Parent = panel2;
if (nav == true)
{
myBrowser.Load(textBox1.Text);
nav = false;
}
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
Cef.Shutdown();
}
同样,我正在使用最新版本的cef sharp(或至少从nuget package manager安装的版本)的c#。在form1.cs中的tab函数中,您需要添加一个标题更改函数,如下所示
browser.TitleChanged += OnBrowserTitleChanged;
ChromiumWebBrowser browser = new ChromiumWebBrowser("google.com");
tab.Controls.Add(browser);
browser.Dock = DockStyle.Fill;
您还需要指定浏览器是什么,并将dockstyle设置为这样填充
browser.TitleChanged += OnBrowserTitleChanged;
ChromiumWebBrowser browser = new ChromiumWebBrowser("google.com");
tab.Controls.Add(browser);
browser.Dock = DockStyle.Fill;
现在对于OnBrowserTitleChanged,您需要一个EventArg,它将告诉选项卡以这种格式显示文档标题
this.InvokeOnUiThreadIfRequired(() => browserTabControl.SelectedTab.Text = args.Title);
这会将文档标题添加到tabcontrol browserTabControl是tabcontrol的名称,您必须将browserTabControl更改为tabcontrol的任何名称。另外,您拥有的代码不属于cef initialize。您需要创建一个addNewTab方法,其中包含要添加新选项卡时将处理的所有函数。此外,如果希望有选项卡,则不能使用面板。您需要一个tabcontrol我忘了提到我正在使用一个windows窗体项目(您可能已经知道了)。另外,它是parent.parent.text,因为浏览器的父级是一个面板。
CefSharp
源代码包含一个选项卡式的WinForms
示例,请查看以获取参考。订阅标题更改
事件,获取标题更改时的通知。@amaitland嘿,谢谢你的帮助,但是我一直在查找cef sharp源代码,找不到标题更改事件的位置。如果你能更深入地回答这个问题,甚至花时间回答这个问题,那就太好了:)我不知道你的代码是怎么回事。只需搜索关键字的解决方案。首先,我不使用面板来做这件事。我将面板设为其父级,然后面板是选项卡控件的子级。我还有一个addnewtab方法。另外,我已经发现了关于cef.initialize的事情并修复了它。另外,它在下面给了我一个错误。invokeonuthreadifrequired(()说…等等,首先我需要说一些可能会改变事情的话。我有一个叫做“tab”的表单每次创建选项卡时,它都会执行以下操作:TabPage tab=new TabPage();tab newtab=new tab();newtab.Show();newtab.TopLevel=false;newtab.Dock=DockStyle.Fill;tab.Controls.Add(newtab);tabControl1.TabPages.Add(选项卡);@jamdogie无论如何,它说它没有在类中引用。这可能是我的愚蠢。如果你使用tabcontrol,你不需要使用面板重新阅读我提供的代码,你理解它应该没有问题,你还需要查看github上的文档来完成addNewTab方法。如果你在这方面仍然有问题,你应该试着做点别的我用了一个面板来简化浏览器控件的操作,而不需要用代码。我已经解决了这个问题,我会把你给出的答案标记为正确的,因为错误是我自己造成的。谢谢。