J'ai créé un UserControl avec une liste déroulante. Cette zone de liste déroulante est peuplée à partir d'un fichier XML, lorsque celui-ci n'est pas présent, il est chargé à partir du fichier de ressources.
Cela fonctionne très bien dans le programme, mais il ne peut pas être affiché dans le concepteur - il dit: "Référence d'objet n'est pas définie sur une instance d'un objet."UserControl ne peut pas être affiché dans la référence d'objet Designer - null
Dans la classe responsable de chargement de la liste de xml la vérification de référence null est ignorée pour des raisons indépendantes de ma compréhension ...
public SortedDictionary<string, string> Countries
{
get
{
if (object.ReferenceEquals(countries, null))
{
GetCountryList();
}
return countries;
}
}
Peuplement de l'comboBox va comme ceci:
comboBoxCountry.DataSource = new BindingSource(Program.language.Countries, null);
Program.language
est initialisé dans le programme, mais cela n'aide pas pour le concepteur.
La question est, comment (quand, à quel événement) devrais-je remplir le ComboBox (= charger la liste de xml) pour pouvoir afficher mon contrôle dans le concepteur.
Cela semble fonctionner. Y at-il une raison, pourquoi
if(!this.DesignMode
ne fonctionne pas dans le constructeur du composant, alors que cela fonctionne dans l'événement Load? – LukasQuand vous dites que ça ne marche pas, que se passe-t-il? – jasonh
Il semble être ignoré ... Cela ne fonctionne pas - il ne peut pas être affiché dans le concepteur. public LoacationUserControl() {InitializeComponent(); if (! this.DesignMode) {LoadCountries(); }} Cela fonctionne: private void LoacationUserControl_Load (expéditeur d'objet, EventArgs e) {if (! This.DesignMode) {LoadCountries(); }} Dans les deux cas, le contenu de LoadCountries() est dans if (! This.DesignMode) {} – Lukas