Forme de Form Plante au 3°clic [Résolu]

Signaler
Messages postés
17
Date d'inscription
mercredi 11 juillet 2007
Statut
Membre
Dernière intervention
11 septembre 2008
-
Messages postés
17
Date d'inscription
mercredi 11 juillet 2007
Statut
Membre
Dernière intervention
11 septembre 2008
-
Bonjour
J'ai un petit code pour tester la modification de la forme  de Form ou  d'un controle , mais ça plante au 3 ° clic et je me demande pourquoi : Bug de VB  ou Bug de Moi  ?
Voila le code à mettre dans Form1 Si vous voulez tester.
Public

Class Form1Dim Rond1 AsNew System.Drawing.Drawing2D.GraphicsPath

Dim reg1, reg0 AsNew Region

Dim Choix AsBoolean = True

PrivateSub Form1_Click(ByVal sender AsObject, ByVal e As System.EventArgs) HandlesMe.Click
If Choix ThenMe.Region reg1 ElseMe.Region reg0

Choix = Not Choix

EndSub

PrivateSub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) HandlesMyBase.Load

Rond1.AddEllipse(3, 3, 190, 190)

reg1 = New System.Drawing.Region(Rond1)

reg0 = Me.Region

EndSub

EndClass

Merci d'avance
A+

8 réponses

Messages postés
843
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
7 janvier 2009
5
Salut,
Apparemment, la région n'est utilisable qu'une fois. Il suffit donc de la recréer à chaque fois:

Private Sub Form1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Click
  Static Choix As Boolean = True

  If Choix Then
    Dim Rond1 As New System.Drawing.Drawing2D.GraphicsPath
    Rond1.AddEllipse(3, 3, 190, 190)
    Me.Region = New System.Drawing.Region(Rond1)
  Else
    Me.Region = Nothing
  End If

  Choix = Not Choix
End Sub
Messages postés
17
Date d'inscription
mercredi 11 juillet 2007
Statut
Membre
Dernière intervention
11 septembre 2008

Salut Kevin.Ory

Bien vue .
Mais pourquoi n'y ai-je pas pensé.
C'est dommage d'être obligé de recréer une même region !
Je viens de tester ça marche avec
If
choix ThenMe.Region reg1.Clone ElseMe.Region Nothing

et avec un array de region   "reg(i) .clone  "   ça marche aussi.

Merci et bonne journée
A+
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
35
Salut




Dim reg1, reg0 AsNew Region

reg1 n'est pas déclarée en NEW REGION
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp  
Messages postés
17
Date d'inscription
mercredi 11 juillet 2007
Statut
Membre
Dernière intervention
11 septembre 2008

salut PCPT

A ma faible connaissance d'amateur je dirais que
Non
Dim reg1, reg0 As New Region
 est equivalent a
Dim  reg0 As New Region
Dim  reg1 As New Region
sinon exception au debogage
{"La référence d'objet n'est pas définie à une instance d'un objet."}

En plus ça marche 1 fois pour chaque region (reg0 et reg1)mais pas plus.
En nouvel appel  une region doit être recrée. Bisard mais c"est comme ça !!!

Bonne journée
A+
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
35
re,

en effet je viens de vérifier sous VS2008, la déclaration en ligne type correctement toutes les variables (contrairement à VB6)

bon à savoir ^^
désolé pour ma petite bétise
++
Messages postés
17
Date d'inscription
mercredi 11 juillet 2007
Statut
Membre
Dernière intervention
11 septembre 2008

re,
C'est pas une petite bêtise, c'est une aubaine, puisque j'ai pu étaler mon savoir
Je connais , j'ai assez de mal pour passer de VB6 à VS2005 , j'ai pas encore osé une incursion vers 2008.

Bonne soirée
A+
Messages postés
843
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
7 janvier 2009
5
Ben moi j'vais vous dire que le Newil ne faut pas le mettre

Dim reg1, reg0 As <strike>New</strike> Region
reg1 = New System.Drawing.Region(Rond1)
reg0 = Me.Region

Il ne faut pas appeler initialiser 2 fois la même variable

spoty > VS2003 ou VS2008, ça ne change rien au niveau code. Simplement que dans 2008 il y a plus de trucs comme wpf, linq... mais rien ne t'oblige à les utiliser. Un code VB2003 est compatible avec VB2008.
Messages postés
17
Date d'inscription
mercredi 11 juillet 2007
Statut
Membre
Dernière intervention
11 septembre 2008

Salut

Tu as tout à fait raison .
Même si ça marche ,c'est pas utile.
Ah! les étourderies .

Merci pour l' info consernant VB2008, je crois que je vais me lancer.

Bonne journée
A+