IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

Textbox & Databinding


Sujet :

Windows Forms

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 6
    Points : 4
    Points
    4
    Par défaut Textbox & Databinding
    Bonjour,

    J'ai créé un objet qui contient des champs que je veux pouvoir modifier au travers d'un textbox.

    Pour celà, j'ai utilisé le Databinding, mais si les champs sont affichés correctement, les données modifiées ne sont pas sauvegardées au moment où je quitte la forme.

    Y a t'il une manière de faire que la modification des données soit automatiquement sauvegardée ?

    Merci par avance

  2. #2
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    Citation Envoyé par Hugin Voir le message
    mais si les champs sont affichés correctement, les données modifiées ne sont pas sauvegardées au moment où je quitte la form.
    C'est à dire pas sauvegardées ? Lorsque tu réaffiches le formulaire tu n'as plus les données ?

    L'objet qui te sert à sauver les données est déclaré sur ta form ?
    Si oui, comment affiches-tu la form ?
    Pas de questions techniques par MP

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    En fait j'ai une classe définie ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        public class Record: INotifyPropertyChanged
        {
             private string name = "Undefined";
     
             public string Name
             {
                get{return name;}
                set{name=value;}
             }
        }

    Et une forme définie ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        public partial class Define : Form
        {
            Record record;
     
            public Define(ref Record _record)
            {
                InitializeComponent();
                record = _record;
                this.Textbox1.DataBindings.Add("Text", record.Name, null);
            }
        }

    A l'affichage, tout est ok, mais les modifs que j'apporte à Textox1 ne sont pas sauvegarder dans record.Name lorsque je ferme la forme

  4. #4
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    Il y a des choses qui me semblent bizarres dans ton code.

    Déjà tu utilises mal le INotifyPropertyChanged puisque dans le set de la propriété tu ne fais rien. Ce n'est pas la raison de tes problèmes mais ça t'éviteras des soucis plus tard. Bref, voici à quoi la classe Record devrait ressembler
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    public class Record : INotifyPropertyChanged
    {
        public event PropertyChangedEventHandler PropertyChanged;
     
        private string name;
     
        public string Name
        {
            get { return name; }
            set
            {
                if (value != name)
                {
                    name = value;
                    NotifyPropertyChanged("Name");
                }
            }
        }        
     
        private void NotifyPropertyChanged(String info)
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs(info));
            }
        }
    }
    Ensuite l'utilisation du mot clé ref dans le constructeur de la classe Define est inutile. Une classe est toujours passée par référence.

    Pour finir, tu mets mal la DataBinding en place je crois. Cela devrait plutôt être quelque chose comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.Textbox1.DataBindings.Add("Text", record, "Name");
    Pas de questions techniques par MP

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Bonsoir StormimOn,

    Effectivement en mettant le nom du champs ça passe nickel, mais comme j'adore faire mon chieur, j'ai un autre problème, un des champs est un tableau et là je ne vois pas comment le passer autrement que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.Textbox1.DataBindings.Add("Text",record.CompetName[0],null);
    Si tu as une idée pour passer l'indice je suis preneur.

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Personne n'as une petite idée ???

  7. #7
    Membre émérite Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    En gros, t'as une liste de Records, et tu voudrais avoir un champ textBox qui soit bindé à une propriété d'un Record, en autorisant le passage (ailleurs dans ton interface) d'un record à l'autre ? C'est possible. Le binding simple, c'est associer une propriété d'un contrôle à une propriété d'un objet métier. Mais on peut aussi associer une propriété d'un contrôle à une liste d'objets métier. Jamais fait, mais il faut passer par les CurrencyManagers il me semble.
    ಠ_ಠ

Discussions similaires

  1. [Débutant] Validation Textbox et databinding
    Par Devko dans le forum Windows Forms
    Réponses: 1
    Dernier message: 24/07/2013, 15h10
  2. lier textbox par databinding
    Par r83 dans le forum ADO.NET
    Réponses: 5
    Dernier message: 28/03/2013, 21h49
  3. textbox et databinding
    Par morgan_2956 dans le forum C#
    Réponses: 2
    Dernier message: 20/09/2010, 21h18
  4. Usercontrol textbox et databinding
    Par divos dans le forum Windows Forms
    Réponses: 8
    Dernier message: 19/05/2008, 13h09
  5. [VB.NET] TextBox et DataBinding, encore :-)
    Par apoingsfermes dans le forum Windows Forms
    Réponses: 4
    Dernier message: 21/07/2006, 14h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo