Risolto C# ComboBox da cartella visualizza il numero dei file.

Pacifico437

Utente Gold
27 Aprile 2012
166
78
6
200
Buonasera,

non trovando nessun esempio in rete sono a chiedere un suggerimento.
Ho dei file salvati in una cartella con l'estensione XML e gradirei che siano visualizzati in una ComboBox
per es.: 1.xml,- 2.xml,- 3.xml ed ecc.

Anticipatamente ringrazio e fiducioso di una rispoluzione, saluto.

Domenico
 
Crea un controllo personalizzato estendendo la classe ComboBox
C#:
using System.Windows.Forms;
using System.IO;

namespace textboxTEst
{
    public class customComboBox : ComboBox
    {
        public string Cartella { get; set; }

        public void GetFilesList()
        {
            if(Cartella != null || Cartella != string.Empty && Directory.Exists(Cartella))
            {
                string[] filesxml = Directory.GetFiles(Cartella, "*.xml", SearchOption.TopDirectoryOnly);
                if(filesxml.Length == 0)
                {
                    this.Items.Clear();
                    this.Items.Add("Nessun file presente.");
                    this.SelectedIndex = 0;
                }
                else
                {
                    this.Items.Clear();
                    this.Items.AddRange(filesxml);
                    this.SelectedIndex = 0;
                }
            }
        }

        public void GetFilesList(string Cartella)
        {
            if ( Cartella != null && Cartella != string.Empty && Directory.Exists(Cartella) )
            {
                string[] filesxml = Directory.GetFiles(Cartella, "*.xml", SearchOption.TopDirectoryOnly);
                if (filesxml.Length == 0)
                {
                    this.Items.Clear();
                    this.Items.Add("Nessun file presente.");
                    this.SelectedIndex = 0;
                }
                else
                {
                    this.Items.Clear();
                    this.Items.AddRange(filesxml);
                    this.SelectedIndex = 0;
                }
            }
        }
    }
}


Lo aggiungi al windows form e per aggiornare la lista file chiami nel formLoad o dove vuoi

C#:
//Chiamata GetFilesList con parametro
customComboBox1.GetFilesList("C:\\Users\\Alex\\Desktop");

//Oppute chiamata senza parametri ma impostando la proprietà "Cartella" del combobox
customComboBox1.GetFilesList();


Immagine.png
 
Gent.mo Insidehachers,

ringrazio della disponibilità e mi scuso del ritardo.

Ho provato il codice con il risultato negativo viene segnalato un errore in rosso al:
"System.Windows.Forms.ComboBox.GetFilesList" e:
ComboBox.GetFilesList();
precisamente a: "GetFilesList".

La descrizione dell'errore:
"Probabilmente manca una direttiva Using o un riferimento all'assembly".

All'Using, ho inserito:

using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;

Rinnovo le scuse e fiducioso saluto.

Domenico.
 
Gent.mo Insidehachers,

ringrazio della disponibilità e mi scuso del ritardo.

Ho provato il codice con il risultato negativo viene segnalato un errore in rosso al:
"System.Windows.Forms.ComboBox.GetFilesList" e:
ComboBox.GetFilesList();
precisamente a: "GetFilesList".

La descrizione dell'errore:
"Probabilmente manca una direttiva Using o un riferimento all'assembly".

All'Using, ho inserito:

using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;

Rinnovo le scuse e fiducioso saluto.

Domenico.
Fai aggiungi nuovo elemento > classe la chiami customComboBox.cs e gli copi dentro
C#:
using System.Windows.Forms;
using System.IO;

public class customComboBox : ComboBox
{
    public string Cartella { get; set; }

    public void GetFilesList()
    {
        if (Cartella != null || Cartella != string.Empty && Directory.Exists(Cartella))
        {
            string[] filesxml = Directory.GetFiles(Cartella, "*.xml", SearchOption.TopDirectoryOnly);
            if (filesxml.Length == 0)
            {
                this.Items.Clear();
                this.Items.Add("Nessun file presente.");
                this.SelectedIndex = 0;
            }
            else
            {
                this.Items.Clear();
                this.Items.AddRange(filesxml);
                this.SelectedIndex = 0;
            }
        }
    }

    public void GetFilesList(string Cartella)
    {
        if (Cartella != null && Cartella != string.Empty && Directory.Exists(Cartella))
        {
            string[] filesxml = Directory.GetFiles(Cartella, "*.xml", SearchOption.TopDirectoryOnly);
            if (filesxml.Length == 0)
            {
                this.Items.Clear();
                this.Items.Add("Nessun file presente.");
                this.SelectedIndex = 0;
            }
            else
            {
                this.Items.Clear();
                this.Items.AddRange(filesxml);
                this.SelectedIndex = 0;
            }
        }
    }
}

Ricompila la soluzione dopodichè troverai nella casella degli strumenti questo
Cattura.PNG

Trascinalo nel form designer e poi lo utilizzi come customComboBox.GetFilesList
 
Gent.mo Insidehachers,

ringrazio della gentilezza e pazienza.
Sono mortificato per il fastidio che purtroppo ancora è
negativo.
Invio il link del file zippato con la preghiera, tempo permettendo, di visionare e correggere.

Mi scuso se approfitto, fiducioso saluto.

Domenico

 
Gent.mo Insidehachers,

ringrazio della gentilezza e pazienza.
Sono mortificato per il fastidio che purtroppo ancora è
negativo.
Invio il link del file zippato con la preghiera, tempo permettendo, di visionare e correggere.

Mi scuso se approfitto, fiducioso saluto.

Domenico

 

Allegati

  • Nodi Salvati.zip
    38.2 KB · Visualizzazioni: 2
Gent.mo Insidehachers,

sono a ringraziare della cortesia, funziona e mi scuso se approfitto per una modifica se si può applicare.

Al customConbobox appare l'elenco della directory per quanto sono i file:

> C:\Users\User\Desktop\Copia\1.xml ed ecc.

è possibile la visisone solo il terminale di: 1.xml, 2.xml, ed ecc.

Inoltre gradirei sempre se è possibile una descrizione dettagliata che al momento non sono riuscito a trovare una guida, ad inserire al programma customComboBox.
Ho provato ad aprire un programma, ho effettuato "Ricompila la soluzione" e non appare alla casella degli strumenti customComboBox.

Grato per la pazienza che dedichi, saluto.
Domenico.
 
1.png
2.png
3.png


Nella terza immagine ho sbagliato a scrivere era "customComboBox"

Una volta creata la classe copia e incolla il codice della classe e fai ricompila e dovrebbe uscirti "customComboBox" della casella degli strumenti
 
Gent.mo Insidehachers,

grato per l'ottima descrizione Ok.

per completare l'ultimo favore è risolvere il primo quesito riguardo alla visione sul customComboBox
dell'ultima parte cioè 1.xml, 2.xml ed ecc. tralasciando il percorso.

Rinnovo il ringraziamento ed auguro una buona giornata.
Domenico.
 
Gent.mo Insidehachers,

grato per l'ottima descrizione Ok.

per completare l'ultimo favore è risolvere il primo quesito riguardo alla visione sul customComboBox
dell'ultima parte cioè 1.xml, 2.xml ed ecc. tralasciando il percorso.

Rinnovo il ringraziamento ed auguro una buona giornata.
Domenico.
C#:
public void GetFilesList()
    {
        if (Cartella != null || Cartella != string.Empty && Directory.Exists(Cartella))
        {
            string[] filesxml = Directory.GetFiles(Cartella, "*.xml", SearchOption.TopDirectoryOnly);
            for( int i=0; i<filesxml.Length; i++){
                filesxml[i] = Path.GetFileName(filesxml[i]);
            }
            if (filesxml.Length == 0)
            {
                this.Items.Clear();
                this.Items.Add("Nessun file presente.");
                this.SelectedIndex = 0;
            }
            else
            {
                this.Items.Clear();
                this.Items.AddRange(filesxml);
                this.SelectedIndex = 0;
            }
        }
    }

    public void GetFilesList(string Cartella)
    {
        if (Cartella != null && Cartella != string.Empty && Directory.Exists(Cartella))
        {
            string[] filesxml = Directory.GetFiles(Cartella, "*.xml", SearchOption.TopDirectoryOnly);
            for (int i = 0; i < filesxml.Length; i++){
                filesxml[i] = Path.GetFileName(filesxml[i]);
            }
            if (filesxml.Length == 0)
            {
                this.Items.Clear();
                this.Items.Add("Nessun file presente.");
                this.SelectedIndex = 0;
            }
            else
            {
                this.Items.Clear();
                this.Items.AddRange(filesxml);
                this.SelectedIndex = 0;
            }
        }
    }