2013-02-19 5 views
0

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. Code generating error and error message

code

qui 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(); 
    } 
+0

Qu'est-ce qui appelle ReLayout? Est-ce par hasard qu'on l'appelle d'un fil? – Pete

+0

@Pete 'ReLayout()' est appelée dernière chose dans le constructeur du formulaire. – AppFzx

+0

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

Répondre

1

Active l'erreur a été générée dans la première déclaration

g.DrawArc(SystemPens.ButtonFace, outerCircle[-1], 115, 220); 

. Toujours pas sûr pourquoi il ne vous plaignez pas jusqu'à la prochaine mais la façon dont je l'ai découvert était en ajoutant une ligne:

Console.WriteLine("Finished first arc"); 

après le premier tirage de l'arc. L'erreur est alors apparue sur le Console.WriteLine. Bien sûr, Console.WriteLine ne faisait pas d'erreur, ce qui signifie qu'il a dû être annulé par rapport à l'instruction précédente qui tentait de redimensionner un rectangle à une taille négative et d'y dessiner un arc.

La modification du [-1] à [150] a résolu le problème.

Questions connexes