C# 制作选项卡式cef sharp浏览器重命名选项卡页面

C# 制作选项卡式cef sharp浏览器重命名选项卡页面,c#,cefsharp,C#,Cefsharp,我一直在用C#创建一个浏览器。我已经做了,这样你就可以有多个标签,它加载页面正确。但是,我似乎无法找到如何将选项卡重命名为页面名称 这是form1.cs加载事件中的代码: Cef.Initialize(); toolTip1.SetToolTip(button1, "Settings"); TabPage tab = new TabPage(); Tab newtab = new Tab();

我一直在用C#创建一个浏览器。我已经做了,这样你就可以有多个标签,它加载页面正确。但是,我似乎无法找到如何将选项卡重命名为页面名称

这是form1.cs加载事件中的代码:

                    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方法。如果你在这方面仍然有问题,你应该试着做点别的我用了一个面板来简化浏览器控件的操作,而不需要用代码。我已经解决了这个问题,我会把你给出的答案标记为正确的,因为错误是我自己造成的。谢谢。