0
votes

Comment ajouter / mettre à jour des éléments sur ComboBox existant périodiquement?

J'essaie de modifier (ajouter ou supprimer) des éléments d'une combinaison de Combobox tandis que le formulaire est déjà en cours d'exécution, j'ai essayé la méthode Ajouter ceci.combobox1.items.add ("Test2"); Mais Il n'ajoute que l'élément s'il exécute avant application.run (formulaire); .

pourquoi il ne met pas la mise à jour / l'ajout de l'élément dans le ComboBox?

Form1.designer.cs: xxx

form1.cs: xxx

programme.cs: xxx

edit

Comment obtenir une mise à jour périodique des articles par une fonction?


0 commentaires

4 Réponses :


1
votes

Le code généré par les concepteurs ne doit être modifié que par les utilisateurs finaux dans des circonstances très spécifiques, et je ne crois pas que ce soit l'un d'entre eux. Ce type d'appel de méthode n'appartient pas non plus dans programme.cs .

La raison pour laquelle votre méthode appelle ne fonctionne pas est que vous le placez dans programme.cs . Lorsque votre programme.cs appelle application.run () , il commence une boucle de message sur le thread actuel avec le formulaire spécifié (dans ce cas, formulaire1 < / code>). Form1 Bloque l'exécution dans Program.cs.cs jusqu'à ce qu'il soit fermé. Une fois que form1 est fermé, l'exécution continue dans programme.cs . En d'autres termes, ce n'est qu'après que vous avez fermé form1 que le test () est invoqué.

Pour résoudre ce problème, lancez d'abord votre test méthode à partir de concepteur à form1.cs . Ensuite, déplacez le Test () METHODE Call to Form1 S ( Formulaire public1 () Dans Form1.cs ). Sinon, créez un autre événement / méthode dans form1.cs (peut-être un charger () méthode) et exécutez test ()


3 commentaires

Merci ce que vous avez fourni fonctionne, mais comment faire si je ne veux pas mettre à jour les articles pendant la construction ou la charge, mais après un certain temps ou même périodiquement?


@ johan472 Comment vous ajoutez-les après quelque temps ou périodiquement dépend de l'intervalle de temps ou de l'événement déclencheur.


Désolé, je veux dire sur le temps basé sur le temps, j'ai trouvé le Solution qui me donne ce que je cherchais.



0
votes

Au lieu d'utiliser SelectIndexchanged, vous devez utiliser l'événement de clic

dans cet exemple, j'utilise un bouton pour ajouter un élément Combobox eveyTime i Cliquez sur IT

Peut-être pas la meilleure approche, mais cela fonctionne fine xxx

 Entrez la description de l'image ici

et votre programme n'est pas bien fait, form1.cs.designer est Utilisez pour créer l'interface utilisateur (interface utilisateur) de votre programme, vous ne devez pas ajouter votre fonction ici.

formes.cs.designer = UI, conception

formes.cs = Fonctions < /p >p>programm.cs = défini quel formes.cs fonctionnera en premier (nouveau (form1))


2 commentaires

Je ne cherche pas à contrôler l'ajout d'objets manuellement, mais une fonction va faire


Je montre comment l'ajouter manuellement, mais une fonction peut l'ajouter si vous voulez



0
votes

Vous pouvez également l'utiliser pour ajouter un élément avec une fonction

Exemple: xxx

 Entrez la description de l'image ici


2 commentaires

Je suis nouveau à C # alors j'apprécie vos explications, comme dans mon Commentaire Comment si je veux que la fonction soit mise à jour périodiquement et non à l'événement de construction ou de chargement?


Je suppose qu'il est impossible de charger des éléments de comboBox dynamiquement sans les ouvrir: - /



0
votes

J'ai trouvé une caractéristique très utile qui est minuteries .

J'ai utilisé une minuterie initialisée à l'intérieur du constructeur de formulaire afin de mettre à jour périodiquement le ComboBox, dans l'exemple suivant, il a ajouté un élément qui est l'heure actuelle à la liste déroulante toutes les 2 secondes pendant 5 fois:

form1.designer.cs: xxx

Form1.cs xxx


0 commentaires