2009-07-15 4 views
2

Je rends des choses avec un objet Graphics dans une zone d'image à l'intérieur de l'événement Paint pour cette image.GDI + ne lance pas d'exception, gros rouge X

void pictureBox1_Paint(object sender, PaintEventArgs e) 
    { 
     Graphics g = e.Graphics; 
     g.FillEllipse(color, x, ...); 
     etc etc...... 
    } 

Tout fonctionne bien, mais tout à coup le picturebox devient blanc et affiche un grand X rouge Si je regarde dans la fenêtre de sortie, je peux voir qu'il ya une exception là, souvent un OverflowException ou NullPointerException.

Y at-il un moyen de trouver d'où cette exception est venue? Le débogueur ne se casse pas comme partout ailleurs lorsque vous obtenez une exception.

Répondre

11

Vous pouvez indiquer au débogueur dans Visual Studio de rompre toutes les exceptions ou les exceptions à interrompre même si elles sont gérées par l'utilisateur.

EDIT: dans les menus c'est Debug -> Exceptions ... -> cochez la case "Thrown".

+0

Merci, cette option devrait vraiment être la valeur par défaut pour chaque exception. –

+2

Pas si vous prévoyez gérer l'exception. Par exemple, j'ai récemment fait une analyse automatisée des fichiers PDF en utilisant PDFBox. PDFBox lève une exception s'il rencontre un fichier PDF protégé par mot de passe qu'il ne peut pas ouvrir. Je ne veux pas que le débogueur s'arrête à chaque fois qu'il rencontre cette erreur, donc c'est dans un bloc try/catch qui se connecte et se poursuit à propos de son activité. Je ne voudrais pas que le débogueur ignore le catch et le break. – McAden

0

Ce n'est pas le fait de GDI +. C'est le concepteur qui empêche Visual Studio de se bloquer. Est-ce une erreur qui se produit uniquement au moment du design? Que faire si vous essayez de le reproduire au moment de l'exécution?

+0

C'est à l'exécution que j'obtiens l'erreur. –

+0

Oh, je vois. Je n'ai jamais eu que ça dans le designer. – snarf

Questions connexes