如何在tabcontrol上绘制网站图标

本文关键字:绘制 网站 图标 tabcontrol | 更新日期: 2023-09-27 18:15:17

我能够在TabControl的OnDrawItem事件中使用e.Graphics.Drawimage在选项卡上绘制关闭按钮,但我想在浏览器控制的DocumentCompleted事件后显示该选项卡上的网站图标,但我不能在DocumentCompleted事件中使用e.Graphics.Drawimage

是否有其他方法可以做到这一点。

谢谢你的帮助。

如何在tabcontrol上绘制网站图标

OnDrawItem是正确的方法。如果你这样做,你的图标将被擦除下次标签需要重新绘制(例如,如果你切换到一个不同的标签,或最小化,然后恢复窗口)。在WinForms中,你应该只从控件的绘制事件中绘制控件。

你需要做的是,在你的DocumentCompleted事件中,保存图标(例如在你的UserControl或Form类的字段中),然后调用标签控件上的Invalidate。这将导致你的OnDrawItem事件被触发。你的OnDrawItem可以绘制图标,只要这个字段已经被分配。大致如下:

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