Как нарисовать иконку сайта на tabcontrol - PullRequest
1 голос
/ 22 ноября 2011

Я могу нарисовать кнопку закрытия на вкладке, используя e.Graphics.Drawimage в событии OnDrawItem в TabControl, но я хочу отобразить значок веб-сайта на этой вкладке после события DocumentCompleted элемента управления веб-браузера, но я не могу использовать e.Graphics.Drawimage в DocumentCompleted мероприятии.

Есть ли альтернативный способ сделать это.

Спасибо за вашу помощь.

1 Ответ

1 голос
/ 22 ноября 2011

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, ...);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...