2009-09-16 5 views
0

Je peuplant un combobox avec le nom du mois comme suit: `mois Peuplement et jour

 var engCulture = new CultureInfo("en-US");    
     cmbAmCul.Items.AddRange(engCulture.DateTimeFormat.MonthNames); 

ce qui est la bonne façon de:

  1. éliminer l'entrée vide après les 12 noms de mois .
  2. remplir un autre zone de liste déroulante avec le jour (1-31 || 1-28 || 1-30) selon le mois sélectionné?
+1

Puis-je vous demander pourquoi avez-vous besoin de cela? Il semble que vous essayez de faire un contrôle pour laisser l'utilisateur choisir une date, ce qui me semble inutile. – erelender

Répondre

8

Pour la première partie, vous pouvez utiliser une requête LINQ ...

var engCulture = new CultureInfo("en-US");    
cmbAmCul.Items.AddRange(from m in engCulture.DateTimeFormat.MonthNames 
         where !String.IsNullOrEmpty(m) 
         select m); 

La classe DateTimeInfo soutient des calendriers avec 13 mois, ce qui est la raison pour laquelle cela se produit.

Pour la deuxième partie, je pencherais pour quelque chose comme ...

for (int i = 1; i <= DateTime.DaysInMonth(year, month); i++) { 
    cmbDay.Items.Add(i.ToString()); 
} 

Il est évident que peuplant l'année/mois vars de vos valeurs sélectionnées.

+0

Le premier donne une erreur: "Impossible de convertir implicitement le type 'System.Collections.Generic.IEnumerable ' en 'string []'. Une conversion explicite existe (manque-t-il une distribution?) " – Sunder

+0

linq query fonctionne avec string [] – Sunder

+0

Oui, ça marche bien. Pouvez-vous confirmer que vous ciblez .NET 3.5 avec votre projet, et que vous avez un "using System.Linq" en haut de votre page? – Richard

3
  1. Utilisez String.Trim() pour supprimer les blancs du début & fin des chaînes
  2. Utiliser la valeur de retour de DateTime.DaysInMonth(int year, int month) pour remplir votre zone de liste déroulante jour

Vous pouvez également utiliser un sélecteur de DateTime des contrôles standard ou n'est-ce pas une option pour vous?

+0

J'ai mal compris le 1er point, l'autre réponse est meilleure – jdehaan

+1

+1 pour le sélecteur DateTime – Oliver

0

Vous ne spécifiez pas ce que vous essayez de construire (ASP.NET ou Winforms, etc.) mais vous pouvez éventuellement utiliser un contrôle Calendar au lieu de menus déroulants pour améliorer l'expérience utilisateur. Moins de clics et moins de code qui peut mal se passer.

Questions connexes