J'ai créé un UserControl qui me permet de noter un élément (il permet de
noter de 1 à 5 en affichant des étoiles).
Ce contrôle possède une propriété appelé Rate. Celle-ci donne la note de 1 à
5.
Si j'affecte ce UserControl à une de mes Form, et que je fais un DataBinding
dessus (rcRate.DataBindings.Add("Rate", objCD, "Rate");), objCD n'est jamais
à jour.
Pouvez-vous m'aider ? Y-a-t-il qquechose de particulier pour utiliser le
Databinding sur un UserControl ?
Merci d'avance.
Prosperz
PS : Ci-dessous le code
********** RateControl.cs************
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
namespace NouveauxControles
{
public partial class RateControl : UserControl
{
// 1 propriété indiquant la note de 1 à 5
/*
* Pour chaque "étoile"
* - colorier en bleu lorsqu'on sélectionne (en coloriant tout les
précédents)
* - sur clic, on affecte une note et on colorie les "étoiles"
correspondantes
*/
// Stockage de la note
private int iRate;
#region Propriétés
// Propriété gèrant la note
public int Rate
{
get { return iRate; }
set
{
iRate = value;
RefreshStars(0);
}
}
#endregion
#region Gestion des déplacements de la souris
/// <summary>
/// Entrée de la souris dans une étoile (mouvement)
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void picNotes_MouseEnter(object sender, EventArgs e)
{
// On récupère le nom du contrôle qui se termine par la note
qu'il gère
string strControlName = ((PictureBox)sender).Name;
// On récupère la note gérée par ce contrôle
int iNumber =
int.Parse(strControlName.Substring(strControlName.Length - 1, 1));
// On refraichit l'affichage
RefreshStars(iNumber);
}
/// <summary>
/// Sortie de la souris dans une étoile (mouvement)
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void picNotes_MouseLeave(object sender, EventArgs e)
{
RefreshStars(0);
}
/// <summary>
/// Clicu sur une étoile
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void picNotes_Click(object sender, EventArgs e)
{
// On récupère le nom du contrôle qui se termine par la note
qu'il gère
string strControlName = ((PictureBox)sender).Name;
// On récupère la note gérée par ce contrôle
int iNumber =
int.Parse(strControlName.Substring(strControlName.Length - 1, 1));
int iNumberSelect = iNumber;
// Si on a cliqué sur une étoile déjà sélectionnée, on la
déselectionne (permet le retour à vide)
if (Rate == iNumber) iNumber--;
// On refraichit l'affichage et la note
this.Rate = iNumber;
RefreshStars(iNumberSelect);
// Déclenchement de l'évènement marquant le changement
RateChanged(this, e);
}
#endregion
}
}
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Prosperz
Bon j'ai trouvé une solution, dans le Designer, j'ai changé une propriété de BInding a OnPropertyChanged au lieu de OnValidation.
DOnc ma question est pourquoi cela ne marchait pas en Validation ? Doit-on coder des évènements spécifiques pour que cela fontionne ?
A+
"Prosperz" a écrit dans le message de news: 44156814$0$1173$
Bonjour,
J'ai créé un UserControl qui me permet de noter un élément (il permet de noter de 1 à 5 en affichant des étoiles).
Ce contrôle possède une propriété appelé Rate. Celle-ci donne la note de 1 à 5.
Si j'affecte ce UserControl à une de mes Form, et que je fais un DataBinding dessus (rcRate.DataBindings.Add("Rate", objCD, "Rate");), objCD n'est jamais à jour.
Pouvez-vous m'aider ? Y-a-t-il qquechose de particulier pour utiliser le Databinding sur un UserControl ?
Merci d'avance. Prosperz
PS : Ci-dessous le code
********** RateControl.cs************ using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Data; using System.Text; using System.Windows.Forms;
namespace NouveauxControles { public partial class RateControl : UserControl { // 1 propriété indiquant la note de 1 à 5 /* * Pour chaque "étoile" * - colorier en bleu lorsqu'on sélectionne (en coloriant tout les précédents) * - sur clic, on affecte une note et on colorie les "étoiles" correspondantes */
// Stockage de la note private int iRate;
#region Propriétés // Propriété gèrant la note public int Rate { get { return iRate; } set { iRate = value; RefreshStars(0); } } #endregion
#region Gestion des déplacements de la souris /// <summary> /// Entrée de la souris dans une étoile (mouvement) /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void picNotes_MouseEnter(object sender, EventArgs e) { // On récupère le nom du contrôle qui se termine par la note qu'il gère string strControlName = ((PictureBox)sender).Name;
// On récupère la note gérée par ce contrôle int iNumber = int.Parse(strControlName.Substring(strControlName.Length - 1, 1));
// On refraichit l'affichage RefreshStars(iNumber); }
/// <summary> /// Sortie de la souris dans une étoile (mouvement) /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void picNotes_MouseLeave(object sender, EventArgs e) { RefreshStars(0); }
/// <summary> /// Clicu sur une étoile /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void picNotes_Click(object sender, EventArgs e) { // On récupère le nom du contrôle qui se termine par la note qu'il gère string strControlName = ((PictureBox)sender).Name;
// On récupère la note gérée par ce contrôle int iNumber = int.Parse(strControlName.Substring(strControlName.Length - 1, 1)); int iNumberSelect = iNumber;
// Si on a cliqué sur une étoile déjà sélectionnée, on la déselectionne (permet le retour à vide) if (Rate == iNumber) iNumber--;
// On refraichit l'affichage et la note this.Rate = iNumber; RefreshStars(iNumberSelect);
// Déclenchement de l'évènement marquant le changement RateChanged(this, e); } #endregion } }
/// <summary> /// Nettoyage des ressources utilisées. /// </summary> /// <param name="disposing">true si les ressources managées doivent être supprimées ; sinon, false.</param> protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); }
#region Code généré par le Concepteur de composants
/// <summary> /// Méthode requise pour la prise en charge du concepteur - ne modifiez pas /// le contenu de cette méthode avec l'éditeur de code. /// </summary> private void InitializeComponent() { this.components = new System.ComponentModel.Container(); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(RateControl)); this.picNote1 = new System.Windows.Forms.PictureBox(); this.imgNotes = new System.Windows.Forms.ImageList(this.components); this.picNote4 = new System.Windows.Forms.PictureBox(); this.picNote5 = new System.Windows.Forms.PictureBox(); this.picNote2 = new System.Windows.Forms.PictureBox(); this.picNote3 = new System.Windows.Forms.PictureBox();
Bon j'ai trouvé une solution, dans le Designer, j'ai changé une propriété de
BInding a OnPropertyChanged au lieu de OnValidation.
DOnc ma question est pourquoi cela ne marchait pas en Validation ? Doit-on
coder des évènements spécifiques pour que cela fontionne ?
A+
"Prosperz" <prosperz_prosperz@hotmail.com> a écrit dans le message de news:
44156814$0$1173$636a55ce@news.free.fr...
Bonjour,
J'ai créé un UserControl qui me permet de noter un élément (il permet de
noter de 1 à 5 en affichant des étoiles).
Ce contrôle possède une propriété appelé Rate. Celle-ci donne la note de 1
à
5.
Si j'affecte ce UserControl à une de mes Form, et que je fais un
DataBinding
dessus (rcRate.DataBindings.Add("Rate", objCD, "Rate");), objCD n'est
jamais
à jour.
Pouvez-vous m'aider ? Y-a-t-il qquechose de particulier pour utiliser le
Databinding sur un UserControl ?
Merci d'avance.
Prosperz
PS : Ci-dessous le code
********** RateControl.cs************
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
namespace NouveauxControles
{
public partial class RateControl : UserControl
{
// 1 propriété indiquant la note de 1 à 5
/*
* Pour chaque "étoile"
* - colorier en bleu lorsqu'on sélectionne (en coloriant tout
les précédents)
* - sur clic, on affecte une note et on colorie les "étoiles"
correspondantes
*/
// Stockage de la note
private int iRate;
#region Propriétés
// Propriété gèrant la note
public int Rate
{
get { return iRate; }
set
{
iRate = value;
RefreshStars(0);
}
}
#endregion
#region Gestion des déplacements de la souris
/// <summary>
/// Entrée de la souris dans une étoile (mouvement)
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void picNotes_MouseEnter(object sender, EventArgs e)
{
// On récupère le nom du contrôle qui se termine par la note
qu'il gère
string strControlName = ((PictureBox)sender).Name;
// On récupère la note gérée par ce contrôle
int iNumber =
int.Parse(strControlName.Substring(strControlName.Length - 1, 1));
// On refraichit l'affichage
RefreshStars(iNumber);
}
/// <summary>
/// Sortie de la souris dans une étoile (mouvement)
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void picNotes_MouseLeave(object sender, EventArgs e)
{
RefreshStars(0);
}
/// <summary>
/// Clicu sur une étoile
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void picNotes_Click(object sender, EventArgs e)
{
// On récupère le nom du contrôle qui se termine par la note
qu'il gère
string strControlName = ((PictureBox)sender).Name;
// On récupère la note gérée par ce contrôle
int iNumber =
int.Parse(strControlName.Substring(strControlName.Length - 1, 1));
int iNumberSelect = iNumber;
// Si on a cliqué sur une étoile déjà sélectionnée, on la
déselectionne (permet le retour à vide)
if (Rate == iNumber) iNumber--;
// On refraichit l'affichage et la note
this.Rate = iNumber;
RefreshStars(iNumberSelect);
// Déclenchement de l'évènement marquant le changement
RateChanged(this, e);
}
#endregion
}
}
/// <summary>
/// Nettoyage des ressources utilisées.
/// </summary>
/// <param name="disposing">true si les ressources managées doivent
être supprimées ; sinon, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Code généré par le Concepteur de composants
/// <summary>
/// Méthode requise pour la prise en charge du concepteur - ne
modifiez pas
/// le contenu de cette méthode avec l'éditeur de code.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new
System.ComponentModel.ComponentResourceManager(typeof(RateControl));
this.picNote1 = new System.Windows.Forms.PictureBox();
this.imgNotes = new
System.Windows.Forms.ImageList(this.components);
this.picNote4 = new System.Windows.Forms.PictureBox();
this.picNote5 = new System.Windows.Forms.PictureBox();
this.picNote2 = new System.Windows.Forms.PictureBox();
this.picNote3 = new System.Windows.Forms.PictureBox();
Bon j'ai trouvé une solution, dans le Designer, j'ai changé une propriété de BInding a OnPropertyChanged au lieu de OnValidation.
DOnc ma question est pourquoi cela ne marchait pas en Validation ? Doit-on coder des évènements spécifiques pour que cela fontionne ?
A+
"Prosperz" a écrit dans le message de news: 44156814$0$1173$
Bonjour,
J'ai créé un UserControl qui me permet de noter un élément (il permet de noter de 1 à 5 en affichant des étoiles).
Ce contrôle possède une propriété appelé Rate. Celle-ci donne la note de 1 à 5.
Si j'affecte ce UserControl à une de mes Form, et que je fais un DataBinding dessus (rcRate.DataBindings.Add("Rate", objCD, "Rate");), objCD n'est jamais à jour.
Pouvez-vous m'aider ? Y-a-t-il qquechose de particulier pour utiliser le Databinding sur un UserControl ?
Merci d'avance. Prosperz
PS : Ci-dessous le code
********** RateControl.cs************ using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Data; using System.Text; using System.Windows.Forms;
namespace NouveauxControles { public partial class RateControl : UserControl { // 1 propriété indiquant la note de 1 à 5 /* * Pour chaque "étoile" * - colorier en bleu lorsqu'on sélectionne (en coloriant tout les précédents) * - sur clic, on affecte une note et on colorie les "étoiles" correspondantes */
// Stockage de la note private int iRate;
#region Propriétés // Propriété gèrant la note public int Rate { get { return iRate; } set { iRate = value; RefreshStars(0); } } #endregion
#region Gestion des déplacements de la souris /// <summary> /// Entrée de la souris dans une étoile (mouvement) /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void picNotes_MouseEnter(object sender, EventArgs e) { // On récupère le nom du contrôle qui se termine par la note qu'il gère string strControlName = ((PictureBox)sender).Name;
// On récupère la note gérée par ce contrôle int iNumber = int.Parse(strControlName.Substring(strControlName.Length - 1, 1));
// On refraichit l'affichage RefreshStars(iNumber); }
/// <summary> /// Sortie de la souris dans une étoile (mouvement) /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void picNotes_MouseLeave(object sender, EventArgs e) { RefreshStars(0); }
/// <summary> /// Clicu sur une étoile /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void picNotes_Click(object sender, EventArgs e) { // On récupère le nom du contrôle qui se termine par la note qu'il gère string strControlName = ((PictureBox)sender).Name;
// On récupère la note gérée par ce contrôle int iNumber = int.Parse(strControlName.Substring(strControlName.Length - 1, 1)); int iNumberSelect = iNumber;
// Si on a cliqué sur une étoile déjà sélectionnée, on la déselectionne (permet le retour à vide) if (Rate == iNumber) iNumber--;
// On refraichit l'affichage et la note this.Rate = iNumber; RefreshStars(iNumberSelect);
// Déclenchement de l'évènement marquant le changement RateChanged(this, e); } #endregion } }
/// <summary> /// Nettoyage des ressources utilisées. /// </summary> /// <param name="disposing">true si les ressources managées doivent être supprimées ; sinon, false.</param> protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); }
#region Code généré par le Concepteur de composants
/// <summary> /// Méthode requise pour la prise en charge du concepteur - ne modifiez pas /// le contenu de cette méthode avec l'éditeur de code. /// </summary> private void InitializeComponent() { this.components = new System.ComponentModel.Container(); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(RateControl)); this.picNote1 = new System.Windows.Forms.PictureBox(); this.imgNotes = new System.Windows.Forms.ImageList(this.components); this.picNote4 = new System.Windows.Forms.PictureBox(); this.picNote5 = new System.Windows.Forms.PictureBox(); this.picNote2 = new System.Windows.Forms.PictureBox(); this.picNote3 = new System.Windows.Forms.PictureBox();