Casting d'un type de contrôle vers un autre
Bonjour à tous,
J'ai un blocage sur code que je n'arrive pas à régler, malgré quelques recherches dans des docs ou sur le net, j'aurais bien besoin d'un coup de main.
Je vous explique en détail mon problème :
- l'application est du type Windows avec des winforms et des composants tiers (Infragistics) pour les barres d'outils, grilles, saisie, ...
- j'ai une classe dans laquelle j'ai une méthode qui doit parcourir tous les contrôles d'une feuille passée en paramètre
- en fonction du type de contrôle j'ai différentes actions à faire (modifier le .text d'un textbox, remplir la liste d'un combo, ...), sans compter quelques actions à faire sur des contrôles ayant des noms spécifiques (fixés d'avance), sur lesquels je dois par exemple faire des modifs sur leurs propriétés .text ou changer leur tooltiptext
- j'ai une variable (qu'on va appeler "champ") de type Control que j'utilise en parcourant les contrôles de la feuille (du genre champ = feuille.Controls[h])
- accéder aux propriétés .text ou .tag ne pose pas de problème depuis la variable champ, mais lorsque je veux faire un casting vers un des composants tiers (du genre : tool = (UltraToolTipManager)feuille.Controls["toolTips"]), j'ai un message d'erreur "Impossible de convertir le type System.Windows.Forms.COntrol en Infragistics.Win.UltraWinToolTip.UlraToolTipManager"
- du coup, je suis totalement bloqué pour accéder aux fonctionnalités de ces composants :calim2: ...
- je comprends que le casting est censé se faire uniquement d'un type hérité vers un type de base (de textbox vers control par exemple), même si je suis parfois surpris de voir l'inverse (du genre Label l = (Label)c; avec c définie comme Control), mais il n'y-a-t'il pas une solution à mon problème, d'extraire un contrôle et de le manipuler comme étant un type de contrôle précis ?...
Voici un petit résumé de mon code (en gras la ligne à problème) :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
Control champ;
UltraToolTipManager tool;
UltraToolTipInfo tooltip;
string chaine;
champ = feuille.Controls["lblInfosEnregistrement"];
champ.Text = "Nouvel enregistrement en cours.";
chaine = champ.Tag.ToString();
EcrireChamp(ref chaine, "Infos enregistrement", "Nouvel enregistrement en cours.");
champ.Tag = chaine;
tool = (UltraToolTipManager)feuille.Controls["toolTips"];
tooltip = tool.GetUltraToolTip(champ);
tooltip.ToolTipText = "Date de création/Date de modification"; |
Merci d'avance pour tous qui pourront m'aider.