【问题标题】:How do i add website icons and Website name to EasyTabs如何将网站图标和网站名称添加到 EasyTabs
【发布时间】:2021-04-11 03:17:17
【问题描述】:

所以...我正在 Visual Studio 2019 中创建一个 Web 浏览器,并且我拥有浏览器应具有的所有内容选项卡设置进入搜索功能等等。唯一缺少的是当我想在 EasyTabs 选项卡中查看网站名称和图像时。我想用我在该选项卡中的网站替换简单选项卡中的应用程序图标图像,并且我还想替换 EasyTab 的名称而不是它说新选项卡我希望它指定一个网站,我例如,我目前在喜欢 bing。有人可以帮我吗?这将不胜感激。有关更多信息,请参阅我的 AppContainer 代码

namespace Damonic
{
   public partial class AppContainer : TitleBarTabs
   {
       public AppContainer()
       {   
           InitializeComponent();

           AeroPeekEnabled = true;
           TabRenderer = new ChromeTabRenderer(this);
       }

    // Handle the method CreateTab that allows the user to create a new Tab
    // on your app when clicking
    public override TitleBarTab CreateTab()
    {
        return new TitleBarTab(this)
        {
            // The content will be an instance of another Form
            // In our example, we will create a new instance of the Form1
            Content = new Form1
            {
                Text = "New Tab"
            }
        };
    }

    // The rest of the events in your app here if you need to .....
}

}

这是我的 Form1.cs 代码

namespace Damonic
{
   public partial class Form1 : Form
   {
       // 2. Important: Declare ParentTabs
       protected TitleBarTabs ParentTabs
       {
           get
           {
               return (ParentForm as TitleBarTabs);
           }
       }

       public Form1()
       {
           InitializeComponent();
       }

    ChromiumWebBrowser Browser;
    private void Form1_Load(object sender, EventArgs e)
    {
        CefSettings settings = new CefSettings();
        //Initialize
        CefSharpSettings.LegacyJavascriptBindingEnabled = true; // Enable Register JS Object, -- RegisterAsyncJsObject, RegisterJsObject allow
        settings.CachePath = "cache";
        settings.CefCommandLineArgs.Add("enable-media-stream", "1"); //Enable WebRTC4
        settings.CefCommandLineArgs.Add("disable-gpu", "1");
        settings.CefCommandLineArgs.Add("disable-gpu-compositing", "1");

        BrowserSettings browserSettings = new BrowserSettings
        {
            FileAccessFromFileUrls = CefState.Enabled,
            UniversalAccessFromFileUrls = CefState.Enabled,
            WebSecurity = CefState.Enabled
        };

        Browser = new ChromiumWebBrowser(AddressText.Text);
        this.pContainer.Controls.Add(Browser);
        Browser.DownloadHandler = new DownloadHandler();
        Browser.Dock = DockStyle.Fill;
        Browser.Load("https://example.com/home/search?/enginecodec34958439543954989358?.;okoDS|pageloaded");
        this.AcceptButton = this.NavigateToURL;
        Browser.AddressChanged += Browser_AddressChanged;
        Browser.TitleChanged += Browser_TitleChanged;
    }

    private void Browser_TitleChanged(object sender, TitleChangedEventArgs e)
    {
        this.Invoke(new MethodInvoker(() =>
        {
            EasyTabs.SelectedTab.Text = e.Title;
        }));
    }

    private void Browser_AddressChanged(object sender, AddressChangedEventArgs e)
    {
        this.Invoke(new MethodInvoker(() =>
        {
            AddressText.Text = e.Address;
        }));
    }

    private void button1_Click(object sender, EventArgs e)
    {
        if (Browser.CanGoBack)
            Browser.Back();
    }

    private void button2_Click(object sender, EventArgs e)
    {
        if (Browser.CanGoForward)
            Browser.Forward();
    }

    private void button3_Click(object sender, EventArgs e)
    {
        Browser.Reload();
    }

    private void button4_Click(object sender, EventArgs e)
    {
        Browser.Load("https://example.com/home/search?/enginecodec34958439543954989358?.;okoDS|pageloaded");
    }

    private void SecuritySettings_Click(object sender, EventArgs e)
    {

    }

    private void textBox1_TextChanged(object sender, EventArgs e)
    {

    }

    private void AddressBar_Click(object sender, EventArgs e)
    {

    }

    private void button5_Click(object sender, EventArgs e)
    {
        AddressText.Clear();
    }

    private void NavigateToURL_Click(object sender, EventArgs e)
    {
        Browser.Load(AddressText.Text);
    }

    private void button6_Click(object sender, EventArgs e)
    {
        Browser.Load("https://login.live.com/");
    }
}

} iv输入了人们告诉我输入的所有内容,iv甚至查看了EasyTabs Master Project,但我不明白,而且cefsharp示例甚至都没有 有人可以给我输入代码吗,我已经有一个标题事件但它不起作用,它没有错误但只是不起作用。请帮忙。如果你想看看我在说什么,我将导入一个图像Here,它显示文本(“新标签”)我希望它的名称根据我所在的网站而改变。 F

【问题讨论】:

标签: c# tabs visual-studio-2019 cefsharp


【解决方案1】:

在您的 Browser_TitleChange 中,只需删除您的“EasyTabs.SelectedTab” 只需要“Text = e. Title”

并在easytabs标题栏中添加favicon创建一个功能。然后在 Browser_TitleChange 中调用该函数

public void favicon(){
Uri url = new Uri("https://"+ new Uri(browser.Address).Host+ "/favicon.ico";
 try{
 Icon img = new Icon(new System.IO.MemoryStream(new 
 WebClient().DownloadData(url)));
 this. Icon = img; 
 }catch (Exception) {
 this.Icon =  Properties.Resources.tempIcon;
 //change tempIcon to your desired icon, extension is .ico 
 }
 }

【讨论】:

    【解决方案2】:
    private void chromiumWebBrowser1_AddressChanged(object sender, AddressChangedEventArgs e)
    {
        Invoke(new Action(() => textBox1.Text = e.Address));
        {
            Uri uri = new Uri(e.Address);
            {
                try
                {
                    WebClient wc = new WebClient();
    
                    MemoryStream memorystream = new MemoryStream(wc.DownloadData("https://" + uri.Host + "/favicon.ico"));
                    Icon icon = new Icon(memorystream);  
                    {               
    
                        memorystream.Seek(0, SeekOrigin.Begin);
    
                        Invoke(new Action(() =>
                        {
                            Icon = new Icon(memorystream);
    
                            ParentTabs.UpdateThumbnailPreviewIcon(ParentTabs.Tabs.Single(t => t.Content == this));
                            ParentTabs.RedrawTabs();
                        }));
                    }
                }
                catch
                {
                    Invoke(new Action(() => Icon = Resources.DefaultIcon));
                }
            }
    
            Invoke(new Action(() => Parent.Refresh()));
            faviconLoaded = true;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2017-07-02
      • 1970-01-01
      • 2015-09-25
      • 1970-01-01
      • 1970-01-01
      • 2021-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多