我一直在用C#创建一个cefsharp浏览器。我做了它,所以你可以有多个标签,并正确加载页面。但是,我似乎无法找到如何将标签重命名为页面名称。
这是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();
}
再次,我正在使用c#与最新版本的cef sharp(或至少是从nuget包管理器安装的那个)。
答案 0 :(得分:1)
在form1.cs的tab函数中,你需要添加一个像这样的标题更改函数
browser.TitleChanged += OnBrowserTitleChanged;
您还需要指定浏览器是什么,并将dockstyle设置为像这样填充
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初始化。您需要创建一个addNewTab方法,其中包含要添加新选项卡时要处理的所有函数。此外,如果要使用标签,则无法使用面板。你需要一个tabcontrol