WinForms - Делает Форму. Свойство DoubleBuffered влияет на средства управления, помещенные в ту форму?

Проверьте версию модуля `oauth2client ', возможно, вы используете версию более 1.5.2, если это так, вы можете исправить эту проблему, понизив версию и переустановив 1.5.2 или' oauth2client.client.AccessTokenCredentials '. Ссылка на документацию https://oauth2client.readthedocs.io/en/latest/source/oauth2client.client.html

5
задан xyz 26 May 2009 в 15:44
поделиться

1 ответ

Насколько я помню, нет, двойная буферизация НЕ переносится на дочерние элементы управления. Вам нужно установить его для каждого индивидуально. Я погуглию и посмотрю, смогу ли я найти источник, чтобы доказать / опровергнуть это ...

РЕДАКТИРОВАТЬ: Нашел это: http://www.devnewsgroups.net/group/microsoft.public.dotnet. framework.windowsforms / topic17173.aspx

Просто подумал о быстром приеме, чтобы обойти это. Обычно используйте отражение, чтобы получить свойство "DoubleBuffered", а затем установите его:

public static class Extensions
{
    public static void EnableDoubleBuferring(this Control control)
    {
        var property = typeof(Control).GetProperty("DoubleBuffered", BindingFlags.Instance | BindingFlags.NonPublic);
        property.SetValue(control, true, null);
    }
}

Затем в коде формы сделайте что-то вроде этого:

    public Form1()
    {
        InitializeComponent();
        this.DoubleBuffered = true;
        foreach (Control control in this.Controls)
        {
            control.EnableDoubleBuferring();
        }
    }
7
ответ дан 14 December 2019 в 08:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: