Voir l'image pour le code générant l'erreur. J'ai essayé de réorganiser les choses et cela arrive toujours au deuxième appel à DrawArc
. Je copie simplement collé la ligneErreur lors de l'utilisation de GDI + DrawArc n'a aucun sens "ArgumentException n'a pas été gérée par le code utilisateur"
g.DrawArc(SystemPens.ButtonFace, outerCircle[-1], 115, 220);
deux fois de suite pour illustrer l'erreur ne se produisait pas à cause d'une faute de frappe ou erreur de calcul. Il fonctionne bien la première fois, les erreurs de la seconde.
codequi appelle ReLayout()
:
public ButtonFan()
{
InitializeComponent();
for (int i = 0; i < buttonLabels.Count(); i++)
{
buttonLabels[i] = new System.Windows.Forms.Label();
this.buttonLabels[i].Name = "label"+i.ToString();
this.buttonLabels[i].Size = new System.Drawing.Size(50, 23);
this.buttonLabels[i].TabIndex = i;
this.buttonLabels[i].Text = "label"+i.ToString();
}
ReLayout();
}
Qu'est-ce qui appelle ReLayout? Est-ce par hasard qu'on l'appelle d'un fil? – Pete
@Pete 'ReLayout()' est appelée dernière chose dans le constructeur du formulaire. – AppFzx
Vous pouvez l'appeler depuis OnLoad() ou l'événement Form.Load au lieu du constructeur. Et pour confirmer, vous l'appelez directement, pas via une sorte de threading? Autrement dit, ce code s'exécute sur le thread principal et non sur un thread de travail, n'est-ce pas? – Pete