none
Directory.GetFiles solo me traiga los archivos pero en 8 en 8 RRS feed

  • Pregunta

  • Buenas amigos necesito de su ayuda.

    necesito crear una lista que se llene de las imagenes que encuentra en una carpeta se que lo puedo hacer con una Directory.GetFiles  con eso no hay problema. 

    Lo que necesito es que no me llena la lista con todo lo que encuentra si no que por pocos. en la carpeta tengo 300 imagenes, y quiero que la lista me la vaya cargando por poco osea que primero me cargue con 8 imagenes si le doy al scroll para abajo oalgun boton siguiente me limpie la lista y me agarre las siguiente 8 imagenes.

    ahorita tengo este codigo que si la carpeta tiene 300 imagenes las 300 me carga en la lista..

    Ayudaaa.!

            private void Llenar_galeria(bool nameDoc , string path_test)
            {
                try
                {
                    string[] imagenes;
                    galleryControl1.Gallery.Groups[0].Items.Clear();
                    galleryControl1.Gallery.ShowItemText = true;
                    galleryControl1.Gallery.ItemImageLayout = ImageLayoutMode.Stretch;
    
                    if (nameDoc == true)
                    {
                        imagenes = Directory.GetFiles(Properties.Settings.Default.path_Digitalizar_Online);
                    }
                    else
                    {
                        imagenes = Directory.GetFiles(Properties.Settings.Default.path_Digitalizar_Online + @"\"+ path_test);
                    }
        
    
                    List<Image> imgList = new List<Image>();
    
                    foreach (string imagen in imagenes)
                    {
                        imgList.Add(Image.FromFile(imagen));
                    }
    
                    int num_gr1 = 0;
                    num_gr1 = comprobar.visor_Configuracion();
                    foreach (Bitmap imageFileName in imgList)
                    {
                        Image.GetThumbnailImageAbort myCallback = new Image.GetThumbnailImageAbort(ThumbnailCallback);
                        Image myThumbnail = imageFileName.GetThumbnailImage(400, 400, myCallback, IntPtr.Zero);
    
                        galleryControl1.Gallery.Groups[num_gr1].Items.Add(new GalleryItem(myThumbnail, "", ""));
    
                        _indice_imagen += 1;
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }

    muchas gracias
    martes, 17 de abril de 2018 21:40

Todas las respuestas

  • Existe la variante Directory.EnumerateFiles() que resulta ser un poco mejor en cuanto a desempeño, y en teoría puede usted saltarse la cantidad de archivos que desee, inclusive con LINQ, pero estrictamente hablando, entre enumeraciones el directorio pudo haber cambiado su contenido.

    Pero en fin:

    public IEnumerable<string> ObtenerImagenes(string directorio, int pagina, int tamPagina = 8)
    {
        return Directory.EnumerateFiles(directorio, "*.jpg").Skip(tamPagina * (pagina - 1)).Take(tamPagina);
    }


    Jose R. MCP
    Code Samples

    miércoles, 18 de abril de 2018 1:28
    Moderador