Problème redessiné sur Windows 10 avec DoubleBuffering et FormBorderStyle.None

J’ai un problème avec un projet Windows Forms, que je ne peux reproduire que sur une machine Windows 10 (sous Windows 7, cela fonctionne). Je pense que je pourrais isoler la source du problème, à savoir si je mets la double mise en tampon et si FormBorderStyle est FormBorderStyle sur None , puis si je redimensionne le formulaire dans un gestionnaire d’événements, les parties d’arrière-plan et certaines commandes ne sont pas redessinées. C’est aussi vrai que cela fonctionne parfois (une fois sur cinq).

Non redessiné il a l’air si (souvent un peu différent):

entrez la description de l'image ici

et il devrait donc ressembler à:

entrez la description de l'image ici

Pour reproduire le problème, il suffit de placer quelques contrôles dans le formulaire (le montant peut également être important), activez la double mise en tampon en surchargeant CreateParams , FormBorderStyle=None (avec un autre style de bordure, cela fonctionne!).

Code derrière:

 public partial class Form1 : Form { public Form1() { InitializeComponent(); } protected override CreateParams CreateParams { get { CreateParams cp = base.CreateParams; cp.ExStyle |= 0x02000000; // Turn on WS_EX_COMPOSITED return cp; } } private bool small = true; private void button1_Click(object sender, EventArgs e) { //toggle the form's size Height = Height + 300*(small?-1:1); small = !small; } private void button5_Click(object sender, EventArgs e) { Close(); } } 

Question:
Est-ce un bogue connu de MS (ou peut-être une intention de se débarrasser des formulaires Windows;)) dans Windows 10 ?
Des idées?
Double mise en mémoire tampon et aucune bordure ne doit être.

Mise à jour: j’ai une version Win 10 Pro: 1703; Construisez 15063.1155.
Update2: Test sur Win 10 Pro Version: 1709; Build 16299.492 – le même problème.

Update3: Test sur Win 10 Home Version: 1803 – beaucoup mieux (il me fallait quelques minutes de test pour le reproduire), mais le problème persiste. Ce test a été effectué sur un autre ordinateur avec une autre carte graphique.

Solution de contournement:
J’ai peur de devoir utiliser cette solution de contournement. R: supprimez la barre de titre de Windows Forms et définissez FormBorderStyle par exemple, sur FixedToolWindow .

Pour moi, cela ressemble à une erreur dans le système d’exploitation, mais j’ai trouvé comment le faire fonctionner sans abandonner DoubleBuffering et FormBorderStyle=None .

Si le style de la fenêtre sera prolongé de

 cp.ExStyle |= 0x00080000; // Turn on WS_EX_LAYERED 

alors tout fonctionne comme prévu.