【问题标题】:How to draw favicon of a website on tabcontrol如何在 tabcontrol 上绘制网站的图标
【发布时间】:2011-11-21 23:51:20
【问题描述】:
我可以在 TabControl 的 OnDrawItem 事件中使用 e.Graphics.Drawimage 在标签上绘制关闭按钮,但我想在 webbrowser 控件的 DocumentCompleted 事件之后在该标签上显示网站的图标,但我不能使用 @987654323 @ 在DocumentCompleted 事件中。
有没有其他方法可以做到这一点。
感谢您的帮助。
【问题讨论】:
标签:
c#
winforms
visual-studio-2010
graphics
【解决方案1】:
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, ...);
}