Question

I have a program which gives random files. It is simple but I'm quite new to this. Im having trouble with creating fileinfo list of files. I added a contextmenustrip which has multiple choose of file genre (e.g: video files, text files..)

I wanted to define string array with cntxtmnustrp. and want it make new array and combine with previous. But it didnt work. Should I create a arraylist and add each list to this?

   public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }
    Random r = new Random();
    string path1;          
   DirectoryInfo dif;
  // List<FileInfo> files;
    FileInfo[] files;
    FileInfo[] newfiles;


    int randomchoose;
    int fok;
    int kok, pd;

    string[] filetypes;     



    private void button1_Click(object sender, EventArgs e)
    {

        FolderBrowserDialog hoho = new FolderBrowserDialog();  // yeni dosya yeri

        hoho.ShowNewFolderButton = true;

        if (hoho.ShowDialog() == DialogResult.OK) 
        {
            path1 = hoho.SelectedPath; 
            textBox1.Text = path1;
            dif = new DirectoryInfo(path1);              

            foreach (string ft in filetypes)
        {
           files = dif.GetFiles("*.ft", SearchOption.AllDirectories);
          //files.AddRange(dif.GetFiles(string.Format("*.{0}", ft), SearchOption.AllDirectories));

            newfiles = newfiles.Concat(files);
        }                                                            

           //pd = liste.Length;

           pd = files.Length;
            kok = pd;
        }                  
    }

        }       
    private void button1_Click_1(object sender, EventArgs e)
    {
        listBox1.Sorted = true;

    }

    private void cesit_Click(object sender, EventArgs e)
    {
        //contextMenuStrip1.Show();
        contextMenuStrip1.Show(this.PointToScreen(cesit.Location));
    }


    private void videoFilesToolStripMenuItem_Click(object sender, EventArgs e)
    {
        filetypes = new string[2] { "txt", "png" };

    }

    private void musicFilesToolStripMenuItem_Click(object sender, EventArgs e)
    {
        //tur = ".png";
        //textBox4.Text = tur;
    }

    private void textFilesToolStripMenuItem_Click(object sender, EventArgs e)
    {

    }

}
Was it helpful?

Solution

Assuming I understand what you mean, I'd make the files array into a List, by replacing:

FileInfo[] files;

with:

List<FileInfo> files;

That means you'd change:

files = dif.GetFiles("*.ft", SearchOption.AllDirectories);

to:

files.AddRange(dif.GetFiles(string.Format("*.{0}", ft) SearchOption.AllDirectories));

You can then get rid of the list concatenation:

newfiles = newfiles.Concat(files);
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top