2010-02-18 6 views
2

Comment filtrer des éléments dans une zone de liste à l'aide d'une zone de liste déroulante à l'aide des formulaires C# et Windows?Comment filtrer une zone de liste à l'aide d'une zone de liste déroulante

la zone de liste contient les fichiers et le combobox a besoin de les filtrer par leur extension

S'il vous plaît aider Je suis nouveau à la programmation

+0

Pouvez-vous fournir un extrait de code de ce que vous essayez de faire? Ce problème est tout à fait résolu, mais l'approche à suivre dépendra beaucoup de la façon dont vous remplissez ces combos et listes. – CrimsonX

Répondre

1

Ceci est presque une copie exacte de votre dernière question. La même réponse s'applique.

Sur l'événement d'index modifié de la zone de liste modifiable, j'ajouterais les éléments à votre liste en fonction du filtre sélectionné dans votre liste déroulante. Vous pouvez utiliser System.IO.DirectoryInfo pour filtrer votre répertoire en fonction d'une extension de fichier.

//Clear your listBox before filtering if it contains items 
if(yourListBox.Items.Count > 0) 
    yourListBox.Items.Clear(); 
DirectoryInfo dInfo = new DirectoryInfo(<string yourDirectory>);         
FileInfo[] fileInfo = dInfo.GetFiles("*" + <string yourChosenFileExtension>); 
foreach (FileInfo file in fileInfo) 
{ 
    yourListBox.Items.Add(file.Name); 
} 

Filtering a texbox with a combobox

+0

ye je sais désolé j'ai décidé de le changer en une boîte de liste juste plus de sens. J'ai essayé ce code mais il semble seulement l'ajouter au bas de la liste plutôt que de le filtrer – roller

+0

Vous avez raison. Mes excuses. Voir ma modification ci-dessus. Effacez la zone de liste si elle contient quelque chose avant d'appliquer le filtre. – Aaron

+0

MERCI !!!!! Cela fonctionne maintenant. Thankyou Thankyou Merci – roller

0

Eh bien vous pouvez charger les éléments dans un datatable et assing datatable à la propriété listbox.datasource. Ensuite, vous pouvez définir l'attribut Filter sur le DataTable pour filtrer les éléments. Une autre méthode consiste à placer les éléments dans une liste distincte, une requête asservie linq implémentant le filtre à la propriété ListBox.DataSource une fois que SelectedItem de la zone de liste modifiable.

0

vous devez travailler sur la DataSource pour ListBox, dire qu'il est une liste de noms de fichiers
avec extentions:

List<string> files = new List<string>(); // sample DataSource 

obtenir l'extension choisie dans le ComboBoxto et l'utiliser pour commander DataSource ListBox (fichier).

 string fileExtemsion;    

     var orderedFiles = files.OrderBy(o => o.EndsWith(fileExtemsion)); // order   

     listBox.DataSource = orderedFiles;  // setting Datasource 
     listBox.DataBind(); 
Questions connexes