Wie man ein favicon einer Website auf tabcontrol zeichnet

  • Ich kann im OnDrawItem-Ereignis von TabControl mit e.Graphics.Drawimage eine Schließen-Schaltfläche auf der Registerkarte zeichnen. Ich möchte jedoch das Favicon der Website auf dieser Registerkarte nach dem DocumentCompleted -Ereignis des Webbrowsersteuerelements anzeigen aber ich kann e.Graphics.Drawimage nicht in DocumentCompleted verwenden.

    Gibt es einen alternativen Weg, dies zu tun?

    Vielen Dank für Ihre Hilfe.

    22 November 2011
    AmyShachar Weis
1 answer
  • OnDrawItem ist der richtige Weg. Wenn Sie dies auf eine andere Weise tun, wird Ihr Symbol gelöscht, wenn die Registerkarte das nächste Mal neu gezeichnet werden muss (z. B. wenn Sie zu einer anderen Registerkarte wechseln oder das Fenster minimieren und dann wiederherstellen). In WinForms sollten Sie nur ein Steuerelement aus den Zeichenereignissen dieses Steuerelements zeichnen.

    Sie müssen in Ihrem DocumentCompleted-Ereignis das Symbol (z. B. in einem Feld on) speichern Ihre UserControl- oder Form-Klasse), und rufen Sie dann Invalidate im Registersteuerelement auf. Dadurch wird Ihr OnDrawItem-Ereignis ausgelöst. Ihr OnDrawItem kann dann das Symbol zeichnen, solange das Feld zugewiesen wurde. Etwas ungefähr so:

     private Image _favicon;
    private void WebBrowser1_DocumentCompleted(...) {
        _favicon = ...get the icon...;
        TabControl1.Invalidate();
    }
    private void TabControl1_OnDrawItem(...) {
        if (_favicon != null)
            e.Graphcs.DrawImage(_favicon, ...);
    }
     
    22 November 2011
    Joe White