Bonjour à tous,
Alors sous
VS2005 avec FrameWork 2.0J'essaie de mettre en place un
DataBinding entre un de nos UserControl et un objet.
- Le usercontrol n'est pas très compliqué c'est un TextboX amélioré.
voilà pour l'instant ma classe de test
public class clsTest: INotifyPropertyChanged
{
private int _num;
public int Num
{
get { return _num; }
set {
_num = value;
NotifyPropertyChanged("Num");
}
}
private void NotifyPropertyChanged(string p)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(p));
}
}
public clsTest(){}
public event PropertyChangedEventHandler PropertyChanged;
}
Voici ma partie Formulaire public partial class Form1 : Form
{
clsTest test = new clsTest();
public Form1(){InitializeComponent();}
private void Form1_Load(object sender, EventArgs e)
{
Tnum.DataBindings.Add("Text", test, "Num", false, DataSourceUpdateMode.OnValidation);
test.PropertyChanged += new PropertyChangedEventHandler(test_PropertyChanged);
}
void test_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
label1.Text = test.Num.ToString();
}
private void button1_Click(object sender, EventArgs e)
{
test.Num = 456;
}
}
J'avais d'abord opté pour DataSourceUpdateMode.OnPropertyChanged pour la mise à jour de mon objet mais
je me suis rendu compte que pour une valeur numérique (par exemple) entrée 458 la propriété passait pas 4 puis 45 puis 458
logique après tout.
J'ai donc décidé de passer par
DataSourceUpdateMode.OnValidationQui marche aussi bien, Seulement j'aimerais que le textbox du UserControl valide son contenu après la touche entrée
et que le conteneur de ce UC s'en rende compte pour le DataBinding et la je sèche.
J'ai testé en mettant
this.ValidateChildren(); dans le code du formulaire à un endroit qui allait bien.
Cela fonctionne et met bien à jour la propriété, mais j'aimerais me passer de ce code dans le formulaire et mettre quelque chose d'équivalent dans l'UserControl.
Est ce que quelqu'un aurait une solution, un lien utile ou une explication. ce concept de
DataBinding est un peu nouveau pour moi.
Est ce que je m'y prends mal?
J'espère m'être correctement exprimé ;)
Déjà merci de m'avoir lu
@+: Ju£i¤n
Pensez:
Réponse acceptée