Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在tabcontrol上绘制网站图标_C#_Winforms_Visual Studio 2010_Graphics - Fatal编程技术网

C# 如何在tabcontrol上绘制网站图标

C# 如何在tabcontrol上绘制网站图标,c#,winforms,visual-studio-2010,graphics,C#,Winforms,Visual Studio 2010,Graphics,我可以在TabControl的OnDrawItem事件中使用e.Graphics.Drawimage在选项卡上绘制关闭按钮,但我想在webbrowser控件的DocumentCompleted事件之后在该选项卡上显示网站的图标,但我无法在DocumentCompleted事件中使用e.Graphics.Drawimage 有没有其他方法可以做到这一点 谢谢您的帮助。OnDrawItem是正确的方法。如果您以其他方式执行此操作,则下次需要重新绘制选项卡时,您的图标将被删除(例如,如果切换到其他选项

我可以在TabControl的OnDrawItem事件中使用
e.Graphics.Drawimage
在选项卡上绘制关闭按钮,但我想在webbrowser控件的
DocumentCompleted
事件之后在该选项卡上显示网站的图标,但我无法在
DocumentCompleted
事件中使用
e.Graphics.Drawimage

有没有其他方法可以做到这一点


谢谢您的帮助。

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, ...);
}

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, ...);
}