Bonjour,
Je travail sur Visual 2005. J'ai créé un contrôle personnalisé que je
peux réutiliser dans mes divers projets C#. Ce contrôle est divisé en 2
classes :
> ButtonPopUp qui permet de visualiser un bouton popUp,
> ButtonPopUpList qui gère une fenêtre popUp appelé lorsque
l'utilisateur appui sur le bouton. Elle gère en fait une ListView.
Tout les accés à ButtonPopUpList se font au travers de la classe ButtonPopUp.
C'est une variable membre de la classe ButtonPopUp qui me pose un
problème : "m_sSelectedElementName". Cette variable possède un
accesseur (avec un Get() et un Set()) qui me permet de savoir quel
élément est sélectionné dans la listView de la fenêtre popUp. Voici la
liste des variables membres et l'accesseur :
VARIABLES :
/// <summary>
/// Nom de l'élément sélectionné
/// </summary>
private string m_sSelectedElementName = "";
ACCESSEUR :
/// <summary>
/// Obtient le nom de l'élément sélectionné
/// </summary>
[
EditorBrowsable(EditorBrowsableState.Never),
Browsable (false),
]
public string SelectedElementName
{
get { return m_sSelectedElementName; }
set
{
// vérifie que l'élément se trouve bien dans la liste
if (m_popUpList.ListItems.Contains(value))
{
// récupération du nom
m_sSelectedElementName = value;
// modification de l'élément sélectionné dans la fenêtre popup
m_popUpList.ElementName = m_sSelectedElementName;
// récupération de l'image
m_iSelectedElementImage = m_popUpList.ElementImage;
// changement de l'image sur le bouton
if (m_iSelectedElementImage != null)
buttonEditSymbol.BackgroundImage = m_iSelectedElementImage;
}
}
}
Lorsque j'ajoute mon contrôle perso
ButtonPopUp dans une fenêtre d'un de mes projets via le Designer de
Visual il génère automatiquement le code dans un un fichier
"Designer.cs".
C'est normal jusque là sauf que lorsque je revient sur le Designer de cette fenêtre le message suivant apparaît :
Object reference not set to an instance of an object.
Il refuse donc de m'afficher la fenêtre.
Je retourne donc dans le "Designer.cs" pour voir
ce qui se passe et je vois que la ligne suivante apparait dans
l'initialisation du contrôle :
this.buttonPopUpText.BackColor = System.Drawing.Color.Transparent;
this.buttonPopUpText.Flat = System.Windows.Forms.FlatStyle.Standard;
resources.ApplyResources(this.buttonPopUpText, "buttonPopUpText");
this.buttonPopUpText.Name = "buttonPopUpText";
this.buttonPopUpText.SelectedElementName = "";
this.buttonPopUpText.ClickOnButtonEdit += new System.EventHandler(this.buttonPopUpText_ClickOnButtonEdit);
this.buttonPopUpText.NewselectionInPopUp += new System.EventHandler(this.buttonPopUpText_NewselectionInPopUp);
Si je supprime cette ligne pas de problème le projet démarre et la
popUp fonctionne. J'aimerais savoir pourquoi cette ligne apparait dans
le fichier "Designer.cs" ?
Comme vous pouvez le constater l'accesseur Set() effectue un certains
nombre d'opération. Est-ce celà qui pourrait poser des problème ?
Vive les Moutons !
Vive les Moutons !