none
Erreur avec treeview1 RRS feed

  • Question

  • Bonjour,

    voici en image :

    quand je clique sur éditer avec ContextMenuStrip1 sans sélectionner sur Node1,nodes2 ...etc. il y a une erreur qui s'affiche voici en image :

    Comment faire pour évider cette erreur?

    Merci de votre réponse.

    cordialement,

    dimanche 15 novembre 2015 12:46

Réponses

Toutes les réponses

  • Bonjour,

    La première question a vous poser est : "Qui est null ?"

    Avec VB, quand vous utilisez le mot clé And, les 2 tests sont évalués par VB. Cela signifie que "Treeview1.SelectedNode is Nothing" est évalué ainsi que "Treeview1.SelectedNode.Parent is Nothing".

    Si vous voulez que le 2ème test ne soit pas évalué par VB si le 1er est déjà valide (comme en C#), il faut utiliser le mot clé AndAlso.

    Donc votre test sera plutôt :

    If Treeview1.SelectedNode Is Not Nothing AndAlso Treeview1.SelectedNode.Parent is Not Nothing Then


    Richard Clark
    Consultant - Formateur .NET
    http://www.c2i.fr
    Depuis 1996: le 1er site .NET francophone

    lundi 16 novembre 2015 07:28
  • Merci Richard Clark pour la réponse ça fonctionne, une petite correction du code :

    If Not TreeView1.SelectedNode Is Nothing AndAlso Not TreeView1.SelectedNode.Parent Is Nothing Then

    J'ai une dernier question qui me pose problème:

    Voici mon code :

    Private Sub TreeView1_AfterLabelEdit(sender As System.Object, e As System.Windows.Forms.NodeLabelEditEventArgs) Handles TreeView1.AfterLabelEdit
            If e.Label.Length <> 0 Then
                TreeView1.Nodes(0).Nodes(0).Text = "0"
            ElseIf e.Label.Length > 9 Then
                MessageBox.Show("Veuillez Ne Pas Dépasser 9 Chiffres", "ERREUR", MessageBoxButtons.OK, MessageBoxIcon.Error)
                e.CancelEdit = True
            Else
                e.CancelEdit = False
            End If
        End Sub

    quand je dépasse une valeur 9 chiffre ,il m’affiche bien une message-box( "Veuillez ne pas dépasser 9 chiffres") cela fonctionne correctement mais quand efface la valeur qui il y a plus rien, automatiquement il s'affiche un zéro.

    Mon problème c'est comment faire quand j'efface la valeur ,automatiquement il s'affiche un zéro?

    Merci pour votre réponse.

    Cordialement,

    lundi 16 novembre 2015 08:31
  • If Treeview1.SelectedNode IsNot Nothing AndAlso Treeview1.SelectedNode.Parent IsNot Nothing Then

    C'est plus lisible

    Richard Clark
    Consultant - Formateur .NET
    http://www.c2i.fr
    Depuis 1996: le 1er site .NET francophone

    • Marqué comme réponse zorro591 mardi 17 novembre 2015 09:10
    lundi 16 novembre 2015 08:39
  • Encore Merci Richard Clark pour la réponse.

    Avez-vous une solution a mon deux problème?

    Private Sub TreeView1_AfterLabelEdit(sender As System.Object, e As System.Windows.Forms.NodeLabelEditEventArgs) Handles TreeView1.AfterLabelEdit
            If Not (e.Label Is Nothing) Then
                If e.Label.Length = IntPtr.Zero Then
                    TreeView1.SelectedNode.Nodes(0).Text = 0
                ElseIf e.Label.Length > 9 Then
                    MessageBox.Show("Veuillez Ne Pas Dépasser 9 Chiffres", "ERREUR", MessageBoxButtons.OK, MessageBoxIcon.Error)
                    e.CancelEdit = True
                Else
                    e.CancelEdit = False
                End If
            End If
        End Sub
     

    comment faire quand il y a rien automatiquement remplacer par un zero(voir image)?

    Merci de votre réponse.

    Cordialement,

    lundi 16 novembre 2015 12:19
  • Je dirais (mais à tester) :

    If Not (e.Label Is Nothing) Then
                If string.IsNullOrEmpty(e.Label) Then
                    e.Node.Text = "0"
                ElseIf e.Label.Length > 9 Then
                    MessageBox.Show("Veuillez Ne Pas Dépasser 9 Chiffres", "ERREUR", MessageBoxButtons.OK, MessageBoxIcon.Error)
                    e.CancelEdit = True
                End If
            End If


    Richard Clark
    Consultant - Formateur .NET
    http://www.c2i.fr
    Depuis 1996: le 1er site .NET francophone

    lundi 16 novembre 2015 14:50
  • Bonjour,

    j'ai trouver la solution a mon problème mais pas avec un zéro .

    voici la solution :

     If Not (e.Label Is Nothing) Then
                If e.Label.Length < 1 Then
                    e.CancelEdit = True
                    If e.Label.Length > 9 Then
                        MessageBox.Show("Veuillez Ne Pas Dépasser 9 Chiffres", "ERREUR", MessageBoxButtons.OK, MessageBoxIcon.Error)
                        e.CancelEdit = True
                    End If
                End If
            End If

    Merci a Richard Clark de m'avoir aider a mon problème.

    cordialement,

    mardi 17 novembre 2015 09:14