none
déclarer un array dans les paramètres RRS feed

  • Question

  • Bonjour

    Dans l'onglet Paramètres des propriétés du projet j'ai tenté de déclarer Tables en tant que system.Collections.ArrayList pour stocker une list d'entiers obtenus en parcourant une collection de Checkbox dont je récupère la propriété Text. Mais cela Bug sur cette ligne :

    My.Settings.Tables.Add(table)

    Le message d'erreur est le suivant :

    L'exception System.NullReferenceException n'a pas été gérée
      Message="La référence d'objet n'est pas définie à une instance d'un objet."
      Source="MesTables"
      StackTrace:
           à MesTables.Frm_reglages.AjouterTables(Int32 table) dans C:\Users\pascal\Documents\Visual Studio 2008\Projects\MesTables\MesTables\Frm_reglages.vb:ligne 39    à MesTables.Frm_reglages.CheckBoxes_CheckedChanged(Object sender, EventArgs e) dans C:\Users\pascal\Documents\Visual Studio 2008\Projects\MesTables\MesTables\Frm_reglages.vb:ligne 94    à System.Windows.Forms.CheckBox.OnCheckedChanged(EventArgs e)    à System.Windows.Forms.CheckBox.set_CheckState(CheckState value)    à System.Windows.Forms.CheckBox.OnClick(EventArgs e)    à System.Windows.Forms.CheckBox.OnMouseUp(MouseEventArgs mevent)    à System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)    à System.Windows.Forms.Control.WndProc(Message& m)    à System.Windows.Forms.ButtonBase.WndProc(Message& m)    à System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)    à System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)    à System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)    à System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)    à System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)    à System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)    à System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)    à System.Windows.Forms.Application.Run(ApplicationContext context)    à Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun()    à Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel()    à Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine)    à MesTables.My.MyApplication.Main(String[] Args) dans 17d14f5c-a337-4978-8281-53493378c1071.vb:ligne 81    à System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)    à System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)    à Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()    à System.Threading.ThreadHelper.ThreadStart_Context(Object state)    à System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)    à System.Threading.ThreadHelper.ThreadStart()
     InnerException:
    et je ne comprends pas pourquoi.

     

      Ci-dessous le code qui me permettrait de tenir à jour cette liste :

    Private Sub AjouterTables(ByVal table As Integer)
        Me.Text = ""
        If m_TablesRetenues.Contains(table) Then
        Else
          m_TablesRetenues.Add(table)
        End If
        m_TablesRetenues.Sort()
    
        For Each tbl As Integer In m_TablesRetenues
          My.Settings.Tables.Add(table)
          Me.Text = Me.Text & tbl.ToString & ", "
        Next
        Me.Text = TrimTout(Me.Text)
    
    
      End Sub
      Private Sub RetirerTables(ByVal table As Integer)
        Me.Text = ""
        If m_TablesRetenues.Contains(table) Then
          m_TablesRetenues.Remove(table)
        Else
        End If
        m_TablesRetenues.Sort()
        For Each tbl As Integer In m_TablesRetenues
          My.Settings.Tables.Remove(table)
          Me.Text = Me.Text & tbl.ToString & ", "
        Next
        Me.Text = TrimTout(Me.Text)
      End Sub
    mercredi 3 novembre 2010 20:37

Réponses

Toutes les réponses

  • Le 03/11/2010 21:37, scalpa a écrit :

    Bonjour

    Bonjour

    Dans l'onglet Paramètres des propriétés du projet j'ai tenté de
    déclarer Tables en tant que system.Collections.ArrayList pour stocker
    une list d'entiers obtenus en parcourant une collection de Checkbox
    dont je récupère la propriété Text. Mais cela Bug sur cette ligne :

    My.Settings.Tables.Add(table)

    Le message d'erreur est le suivant :

    L'exception System.NullReferenceException n'a pas été gérée
       Message="La référence d'objet n'est pas définie à une instance d'un
    objet."

    La variable m_TablesRetenues est bien créée ?

    Private m_TablesRetenues as New ...
     -- Fred
    foleide@free.fr

    jeudi 4 novembre 2010 07:23
  • BONJOUR

    J'ai déclaré ceci :

     

    Private m_TablesRetenues As New List(Of Integer)

     


    http://www.scalpa.info
    jeudi 4 novembre 2010 18:22
  • Bonjour

    Comment déclarer une liste d'Integer en tant que paramètre (settings) ?
    J'ai essayé system.collections.Arraylist dans l'onglet Paramètres des propriétés du projet.

    Puis, j'ai déclaré

    Private

     

     

    dans ma Form où se trouvent des checkbox qui alimentent cette liste suivant qu'ils sont cochés ou non.

    m_TablesRetenues As New List(Of Integer)

      Private Sub CheckBoxes_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) _
      Handles CheckBox1.CheckedChanged, CheckBox2.CheckedChanged, CheckBox3.CheckedChanged, _
      CheckBox4.CheckedChanged, CheckBox5.CheckedChanged, CheckBox6.CheckedChanged, _
      CheckBox7.CheckedChanged, CheckBox8.CheckedChanged, CheckBox9.CheckedChanged, _
      CheckBox10.CheckedChanged, CheckBox11.CheckedChanged, CheckBox12.CheckedChanged, _
      CheckBox13.CheckedChanged, CheckBox14.CheckedChanged, CheckBox15.CheckedChanged
    
        Dim chkbx As CheckBox = CType(sender, CheckBox)
        If chkbx.Checked = True Then
          AjouterTables(<span style="color:#0000ff; font-size:x-small"><span style="color:#0000ff; font-size:x-small">CInt</span></span>(chkbx.Text))
        Else
          RetirerTables(<span style="color:#0000ff; font-size:x-small"><span style="color:#0000ff; font-size:x-small">CInt</span></span>(chkbx.Text))
        End If
      End Sub
    

    Mais la méthode :

      Private Sub RetirerTables(ByVal table As Integer)
        Me.Text = ""
        If m_TablesRetenues.Contains(table) Then
          m_TablesRetenues.Remove(table)
        Else
        End If
        m_TablesRetenues.Sort()
        For Each tbl As Integer In m_TablesRetenues
          My.Settings.Tables.Remove(table)
          Me.Text = Me.Text & tbl.ToString & ", "
        Next
        Me.Text = TrimTout(Me.Text)
      End Sub
    
    engendre une erreur ici:
     My.Settings.Tables.Remove(table)
    

    L'exception System.NullReferenceException n'a pas été gérée
      Message="La référence d'objet n'est pas définie à une instance d'un objet."

    Quelqu'un saurait-il m'aider?

    merci

    pascal


    http://www.scalpa.info
    • Fusionné Alex Petrescu lundi 8 novembre 2010 15:17 thread en double
    vendredi 5 novembre 2010 17:40
  • Bonjour,

    Le Arraylist est-il initialiser un première fois ? :

        If My.Settings.Tables Is Nothing Then
          My.Settings.Tables = New ArrayList
        End If
    
    

    samedi 6 novembre 2010 07:57
  • Bonjour,

     

    Vous ne pouvez pas implémenter System.Collections.ArrayList dans les Parametres d’un projet. Si vous l’avez écrit à la main, vérifiez dans le code en mode debug et vous allez voir que l’objet Tables est « Nothing », et c’est lui qui cause l’erreur. Au lieu d’ArrayList vous pouvez ajouter une des classes de System.Collections.Specialized, en fonction de la dimension de la liste que vous voulez garder.

     

    Cordialement,

    Alex

    ________________

    Publiez un article sur MSDN !

    Windows Phone 7

    Astuces pour Visual Studio 2010

    XNA – Développement jeux vidéo

    Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework, Silverlight, Workflow Foundation, WPF

    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

     

     


    Suivez MSDN sur Twitter 

    • Marqué comme réponse scalpa lundi 8 novembre 2010 19:23
    lundi 8 novembre 2010 11:43
  • Bonjour

    Merci pour cette information. J'ai cherché longtemps sans trouver de réponse. C'est pourquoi j'avais reformulé ma question plus clairement...? J'avais regardé du côté de System.Collections.Specialized sans m'en sortir.... Alors j'ai déclaré ma liste en string (pas en manuel, mais à l'aide de l'onglet Propriétés du projet, vu que je ne sais pas faire autrement) du genre : 3,5,8 etc. Puis quand je la récupère je la splite et en fais une list (of Integer). Cela semble faire ce que je souhaitais.

    Merci

    Pascal

    PS, comment fait-on pour vérifier dans le code en mode debug?


    http://www.scalpa.info
    lundi 8 novembre 2010 19:23
  • Bonjour,

     

    Avec la touche F9 vous créez un break point sur une ligne de code. A runtime, l’exécution s’arrête sur ce break point. Pour continuer l’exécution ligne par ligne, utilisez F10. Pour vérifier les valeurs des variables a runtime, placez la souris sur une variable, en mode debug, et vous allez voir son valeur courante.

     

    Cordialement,

    Alex

    ________________

    Publiez un article sur MSDN !

    Windows Phone 7

    Astuces pour Visual Studio 2010

    XNA – Développement jeux vidéo

    Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework, Silverlight, Workflow Foundation, WPF

    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

     

     


    Suivez MSDN sur Twitter 

    mardi 9 novembre 2010 09:06