J'ai un Winform avec une prémisse très basique: modifiez 2 propriétés de chaîne d'un objet qui y est passé, puis enregistrez-le sur le disque lorsque le formulaire se ferme. J'essaie d'utiliser la liaison de données pour lier les propriétés Text de 2 zones de texte sur le formulaire aux 2 propriétés de chaîne de l'objet.WinDiffusions .Net Simple Databinding ne fonctionne pas
Mais cela ne fonctionne pas. Les zones de texte n'affichent jamais les valeurs que j'affecte aux propriétés de l'objet dans le constructeur. Et quand je tape quelque chose dans les zones de texte, les propriétés de l'objet ne sont pas mises à jour. Qu'est-ce que je fais mal?
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Xml;
using System.Xml.Serialization;
namespace Eds_Viewer
{
public partial class EdsConfigForm : Form
{
public EdsConfigForm(EdsConfig myconfig)
{
InitializeComponent();
EdsConfig = myconfig;
if (EdsConfig.VFPConnectionString == null) //set a default value
{
EdsConfig.VFPConnectionString = "Provider=vfpoledb;Data Source=g:\\eds\\";
}
if (EdsConfig.VFPFileName == null) //set a default value
{
EdsConfig.VFPFileName = "InvoiceDB";
}
this.VFPConnectionStringTextbox.DataBindings.Add("Text", EdsConfig, "VFPConnectionString");
this.VFPFileNameTextbox.DataBindings.Add("Text", EdsConfig, "VFPFileName");
}
EdsConfig EdsConfig;
private void SaveConfigToDisk(EdsConfig myconfig)
{
XmlSerializer x = new XmlSerializer(typeof(EdsConfig));
TextWriter tw = new StreamWriter("EdsConfig.xml");
x.Serialize(tw, myconfig);
tw.Close();
}
private void EdsConfigForm_FormClosing(object sender, FormClosingEventArgs e)
{
this.SaveConfigToDisk(this.EdsConfig);
}
}
}
VFPFileName et VFPConnectionString sont des champs publics. –
Oups, la ligne BindingSource était quelque chose que je jouais avec ... pas une partie valide du problème. Edité –
Non, je n'implémente pas INotifyPropertyChanged. Je vais vérifier cela. –