Tableau string avec chemins

Signaler
Messages postés
1
Date d'inscription
lundi 22 février 2016
Statut
Membre
Dernière intervention
22 février 2016
-
Messages postés
15652
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
5 mars 2021
-
Bonjour,

J'ai une fenêtre Form18News.cs avec 18 PictureBox à remplir d'images.

Dans ma MainForm.cs j'ai créé une classe GenerateNews comme suit :

 public static class GenerateNews
        {
            public static string[] filesArray = Directory.GetFiles(@"\\mydomain.net\mycompany\myfolder\mysubfolder\", "*.*", SearchOption.AllDirectories);
        }


J'envoie donc dans un tableau filesArray tous les résultats de mon GetFiles.

Ensuite, dans une classe News.cs (fichiers à part) j'instancie 1 variable par news (donc par picturebox) comme suite :

 public static string strInfo1 = MainForm.GenerateNews.filesArray[0];
        public static string strInfo2 = MainForm.GenerateNews.filesArray[1];
        public static string strInfo3 = MainForm.GenerateNews.filesArray[2];
        public static string strInfo4 = MainForm.GenerateNews.filesArray[3];
        public static string strInfo5 = MainForm.GenerateNews.filesArray[4];
        public static string strInfo6 = MainForm.GenerateNews.filesArray[5];
        public static string strInfo7 = MainForm.GenerateNews.filesArray[6];
        public static string strInfo8 = MainForm.GenerateNews.filesArray[7];
        public static string strInfo9 = MainForm.GenerateNews.filesArray[8];
        public static string strInfo10 = MainForm.GenerateNews.filesArray[9];
        public static string strInfo11 = MainForm.GenerateNews.filesArray[10];
        public static string strInfo12 = MainForm.GenerateNews.filesArray[11];
        public static string strInfo13 = MainForm.GenerateNews.filesArray[12];
        public static string strInfo14 = MainForm.GenerateNews.filesArray[13];
        public static string strInfo15 = MainForm.GenerateNews.filesArray[14];
        public static string strInfo16 = MainForm.GenerateNews.filesArray[15];
        public static string strInfo17 = MainForm.GenerateNews.filesArray[16];
        public static string strInfo18 = MainForm.GenerateNews.filesArray[17];


Ensuite dans ma 2ème fenêtre Form18News.cs j'instancie comme suit mes 18 PictureBox :

try
            {
                pbxL1C1.ImageLocation = News.strInfo1;
            }
            catch
            {
                pbxL1C1.Image = null;
            }
            pbxL1C1.BackColor = Color.White;
            pbxL1C1.SizeMode = PictureBoxSizeMode.Zoom;
            pbxL1C1.Width = iWidthBlock;
            pbxL1C1.Height = iHeightBlock;
            pbxL1C1.Top = iHeightBlock / iHeightBlock;
            pbxL1C1.Left = iWidthBlock / iWidthBlock;


Je vais donc attribuer l'imagelocation avec ma variable de ma classe News.cs

Problèmes :
- J'aimerais pouvoir faire un count de mes news, c'est à dire compter le nombre lignes qu'il y a dans mon tableau (donc le nombre d'images trouvées dans le folder)
- Si je n'ai pas 18 news, tout mes picturebox sont vides
- Avec ma manière de faire mon getdirectory, il me trouve aussi les fichiers thumbs.db et les considère comme tel et essaie de les afficher.
- Dans MainForm.cs j'ai un Timer qui ferme la fenêtre Form18News et qui la réouvre aubout de X temps pour ajouter / supprimer les nouvelles news en plus ou en moins, je dois exécuter le c ode de la classe news.cs pour mettre les chemins dans le tableau

Merci par avance

1 réponse

Messages postés
15652
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
5 mars 2021
516
Bonsoir,

tout d'abord tu as mis "*.*" dans ton patern de getfile, donc forcément il retourne le fichier thumbs, mais n'importe quel autre qui pourrait être mis là par erreur.

Une solution est de faire une requette ensuite:
            string[] fileNames = Directory.GetFiles(@"E:\Mes images", "*.*", SearchOption.AllDirectories);
            string[] images = (from f in fileNames
                               let e = Path.GetExtension(f).ToLower()
                               where e == ".bmp" || e == ".png"
                               select f).ToArray();
 



ça
 public static string strInfo1 = MainForm.GenerateNews.filesArray[0];
        public static string strInfo2 = MainForm.GenerateNews.filesArray[1];
        public static string strInfo3 = MainForm.GenerateNews.filesArray[2];
        public static string strInfo4 = MainForm.GenerateNews.filesArray[3];
        public static string strInfo5 = MainForm.GenerateNews.filesArray[4];
        public static string strInfo6 = MainForm.GenerateNews.filesArray[5];
        public static string strInfo7 = MainForm.GenerateNews.filesArray[6];
        public static string strInfo8 = MainForm.GenerateNews.filesArray[7];
        public static string strInfo9 = MainForm.GenerateNews.filesArray[8];
        public static string strInfo10 = MainForm.GenerateNews.filesArray[9];
        public static string strInfo11 = MainForm.GenerateNews.filesArray[10];
        public static string strInfo12 = MainForm.GenerateNews.filesArray[11];
        public static string strInfo13 = MainForm.GenerateNews.filesArray[12];
        public static string strInfo14 = MainForm.GenerateNews.filesArray[13];
        public static string strInfo15 = MainForm.GenerateNews.filesArray[14];
        public static string strInfo16 = MainForm.GenerateNews.filesArray[15];
        public static string strInfo17 = MainForm.GenerateNews.filesArray[16];
        public static string strInfo18 = MainForm.GenerateNews.filesArray[17];


ne sert strictement à rien, tu as déjà stocké les données dans un tableau static..... et comme tu le dis, si tu n'en as pas 18, ça merde.

Il te suffit de faire une boucle for ou foreach sur le tableau et d'ajouter un picturebox que tu configures à chaque itération



Quand j'étais petit, la mer Morte n'était que malade.
George Burns