C# WebBrowser不显示在选项卡项中

C# WebBrowser不显示在选项卡项中,c#,wpf,chromium-embedded,C#,Wpf,Chromium Embedded,我尝试在c#、wpf和CefSharp上开发WebBrowser以获得经验。 我对WebBrowser中的选项卡使用TabControl。 所以我将webbrowser添加到tabItem.Content,但它不会显示 public partial class MainWindow : Window { ChromiumWebBrowser webBrowser; public MainWindow() { //Browser init

我尝试在c#、wpf和CefSharp上开发WebBrowser以获得经验。 我对WebBrowser中的选项卡使用TabControl。 所以我将webbrowser添加到tabItem.Content,但它不会显示

public partial class MainWindow : Window
{
    ChromiumWebBrowser webBrowser;

    public MainWindow()
    {
        //Browser init
        CefSettings settings = new CefSettings();
        Cef.Initialize(settings);

        InitializeComponent();
        textboxURL.Text = "https://www.google.com";
        webBrowser = new ChromiumWebBrowser();
        webBrowser.Load(textboxURL.Text);
        tabItem1.Content = webBrowser;
    }

    //App Shutdown logic
    private void Exit(object sender, StartupEventArgs e)
    {
        Cef.Shutdown();
    }
}
这是XAML代码。如您所见,我使用DockPanel作为带有URL和按钮的topbar。 和用于带有浏览器的选项卡的选项卡控件。目前,我只使用一个webBrowser作为一个选项卡

Window x:Class="WebBrowser.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-namespace:WebBrowser"
    xmlns:cefSharp="clr-namespace:CefSharp.Wpf;assembly=CefSharp.Wpf"
    mc:Ignorable="d"
    Title="WebBrowser" Height="362" Width="699" WindowState="Maximized" WindowStartupLocation="CenterScreen">
<StackPanel HorizontalAlignment="Stretch" Margin="0,0,0,-1" Height="auto" VerticalAlignment="Stretch" >
    <DockPanel VerticalAlignment="Top">
        <Button x:Name="btnHome" Content="Home" Margin="2" DockPanel.Dock="Left"/>
        <Button x:Name="btnBack" Content="Back" Margin="2" DockPanel.Dock="Left"/>
        <Button x:Name="btnNext" Content="Next" Margin="2" DockPanel.Dock="Left"/>
        <Label x:Name="labelHttp" Content="HTTP" DockPanel.Dock="Left"/>
        <Button x:Name="btnMenu" Content="Menu" Margin="2" DockPanel.Dock="Right"/>
        <Button x:Name="btnGo" Content="Go" Margin="2" DockPanel.Dock="Right"/>
        <Button x:Name="btnRefresh" Content="Refresh" Margin="2" DockPanel.Dock="Right"/>
        <TextBox x:Name="textboxURL" Margin="2"/>
    </DockPanel>
    <TabControl x:Name="tabControl1" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="0,5,0,0" Height="299">
        <TabItem Header="TabPage" Name="tabItem1">
        </TabItem>
    </TabControl>
</StackPanel>
windowx:Class=“WebBrowser.MainWindow”
xmlns=”http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x=”http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d=”http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc=”http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local=“clr命名空间:WebBrowser”
xmlns:cefSharp=“clr命名空间:cefSharp.Wpf;assembly=cefSharp.Wpf”
mc:Ignorable=“d”
Title=“WebBrowser”Height=“362”Width=“699”WindowState=“Maximized”WindowStartupLocation=“CenterScreen”>

好的,我尝试使用Address属性,然后使用init浏览器及其加载我的url! 所以答案是不要使用webBrowser.Load(textboxURL.Text);在新元素上,但使用webBrowser.Address=textBoxURL.Text; 谢谢大家

--使用CefSharp,您可以使用此代码--
注意:%100工作代码

webrowser的大小可能大于tab,因此您看不到控件。另外,请尝试将webbrowser放在前面,并确保它已启用。@jdweng,如果我添加了XAML tabitem.Content,则所有内容都有效。但我不能用c代码添加。只需将其添加为TabItem的内容,用键标记并使用它进行初始化。@Shakra不,我需要用c代码为另一个tabitems添加webBrowser。在WPF中使用控件是一种不好的方法,最好使用浏览器的
Address
属性。
public ChromiumWebBrowser drv;
    string url = "https://www.example.com"; 
    public void syhmhfzaddtab()
    {
        TabPage tb = new TabPage();
        CefSettings settings = new CefSettings();
        Cef.Initialize(settings);

        drv = new ChromiumWebBrowser(url);
        drv.Parent = tb;
        tabControl1.Controls.Add(tb);
        drv = new ChromiumWebBrowser(url);
        drv.Dock = DockStyle.Fill;
    }