none
Initialiser un tabControl RRS feed

  • Question

  • Bonjour à tous et merci d'avance de passer du temps sur mon problème.

    Mon problème est le suivant :
    J'ai un TabControl avec 4 onglets et j'aimerais pouvoir réinitialiser un onglet entier en cliquant sur un bouton (tout réafficher comme c'était d'origine au lancement du programme) . Pour l'instant je réinitialise tout les champs un par un comme ceci :

    private: System::Void but_reinitialise_gr_Click(System::Object^  sender, System::EventArgs^  e) {
      textBox_nom_mat_ajout_mat->Text = nullptr;
      numeric_essai1_mat->Value = System::Decimal(0.00);
      numeric_essai2_mat->Value = System::Decimal(0.00);
      numeric_essai3_mat->Value = System::Decimal(0.00);
      numeric_essai4_mat->Value = System::Decimal(0.00);
      numeric_essai5_mat->Value = System::Decimal(0.00);
      numeric_essai6_mat->Value = System::Decimal(0.00);
      numeric_essai7_mat->Value = System::Decimal(0.00);
      diam_num->Value = System::Decimal(min_diam);
      rec_num->Value = System::Decimal(min_rec);
      ep_num->Value = System::Decimal(min_ep);
      label_res_num1->Text = nullptr;
      label_res_num2->Text = nullptr;
      label_modele_num->Text = nullptr;
      label_modele_num2->Text = nullptr;
      mat_num->Text = nullptr;
      label_norme_num->Text = nullptr;
      pictureBox_norme_num->Image = nullptr;numeric_essai8_mat->Value = System::Decimal(0.00);
    etc... }
    Comme vous pouvez le voir c'est vraiment pas propre. Alors ma question est est ce qu'il y'a un moyen plus jolie de tout réinitialiser???

    Merci
    jeudi 4 juin 2009 11:36

Réponses

  • Salut,

    S’il y a un grand nombre de contrôles que tu veux initialiser sur ces onglets, tu peux utiliser ce code :

    for (int i=0; i< this->tabControl1->TabPages[0]->Controls->Count; i++)
    {
      if (this->tabControl1->TabPages[0]->Controls[i]->GetType()->ToString() == "System.Windows.Forms.TextBox")
        ((TextBox^)this->tabControl1->TabPages[0]->Controls[i])->Text = nullptr;
      if (this->tabControl1->TabPages[0]->Controls[i]->GetType()->ToString() == "System.Windows.Forms.PictureBox")
        ((PictureBox^)(this->tabControl1->TabPages[0]->Controls[i]))->Image = nullptr;
      etc.
    }
    • Marqué comme réponse Marius Bugiulescu lundi 15 juin 2009 14:43
    • Non marqué comme réponse SnakeEyes38 lundi 29 juin 2009 14:29
    • Marqué comme réponse SnakeEyes38 vendredi 17 juillet 2009 09:51
    lundi 15 juin 2009 14:43

Toutes les réponses

  • Salut,

    S’il y a un grand nombre de contrôles que tu veux initialiser sur ces onglets, tu peux utiliser ce code :

    for (int i=0; i< this->tabControl1->TabPages[0]->Controls->Count; i++)
    {
      if (this->tabControl1->TabPages[0]->Controls[i]->GetType()->ToString() == "System.Windows.Forms.TextBox")
        ((TextBox^)this->tabControl1->TabPages[0]->Controls[i])->Text = nullptr;
      if (this->tabControl1->TabPages[0]->Controls[i]->GetType()->ToString() == "System.Windows.Forms.PictureBox")
        ((PictureBox^)(this->tabControl1->TabPages[0]->Controls[i]))->Image = nullptr;
      etc.
    }
    • Marqué comme réponse Marius Bugiulescu lundi 15 juin 2009 14:43
    • Non marqué comme réponse SnakeEyes38 lundi 29 juin 2009 14:29
    • Marqué comme réponse SnakeEyes38 vendredi 17 juillet 2009 09:51
    lundi 15 juin 2009 14:43
  • Désolé de répondre si tard mais moi ca ne marche pas en faisant comme tu dis Marius.
    Mais c'est pas grave, je vais laisser comme c'est.
    lundi 29 juin 2009 14:30
  • Avec une conception soignée : L'objet de la couche business est réinitialisé (voir recréé avec un constructeur sans paramètre) et l'onglet n'aura cas faire son "Databinding" habituel.

    Une bonne conception résout bien des problèmes.
    Paul Bacelar, Ex - MVP VC++
    samedi 11 juillet 2009 18:33
    Modérateur