private void bSearch_Click(object sender, EventArgs e)
        {
            if (dateTimePicker1.Value > dateTimePicker2.Value)
            {
                errorProvider1.SetError(dateTimePicker1, "The initial date cannot be set to a value after the final date.");
                errorProvider1.SetError(dateTimePicker2, "The initial date cannot be set to a value after the final date.");
                return;
            }

            downloader = new BackgroundWorker();

            downloader.DoWork += PerformQuery;

            downloader.RunWorkerCompleted += QueryFinished;

            DownloaderArguments[] da = new DownloaderArguments[2];

            for (int i = 0; i < 2; i++)
            {
                da[i] = new DownloaderArguments();

                if (i == 0)
                    da[i].Company = tbCompanyName.Text;
                else
                    da[i].Company = textBox1.Text;

                da[i].EndDate = dateTimePicker2.Value;
                da[i].StartDate = dateTimePicker1.Value;
            }

            downloader.RunWorkerAsync(da);

            bSearch.Text = "Retrieving data...";
            bSearch.Enabled = false;
        }
        private void bAdd_Click(object sender, System.EventArgs e)
        {
            Decimal value;
            int quantity;

            if (dateTimePicker1.Value > DateTime.Today)
            {
                errorLabel.Text = "Invalid date";
                return;
            }

            else if (string.IsNullOrWhiteSpace(tbCompanyName.Text) ||
                string.IsNullOrWhiteSpace(tbQuantityBought.Text) ||
                string.IsNullOrWhiteSpace(tbStockValue.Text))
            {
                errorLabel.Text = "Fill all fields";
                return;
            }

            else
            {
                try
                {
                    value = Convert.ToDecimal(tbStockValue.Text.Replace(".",","));
                    quantity = Convert.ToInt32(tbQuantityBought.Text);
                }
                catch(FormatException)
                {
                    errorLabel.Text = "Invalid data on numeric fields";
                    return;
                }

                if (value < 0 || quantity < 0)
                {
                    errorLabel.Text = "Numeric fields should be greater than 0";
                    return;
                }

            }

            BackgroundWorker downloader = new BackgroundWorker();

            downloader.DoWork += PerformQuery;

            downloader.RunWorkerCompleted += QueryFinished;

            DownloaderArguments da = new DownloaderArguments();

            da.Company = tbCompanyName.Text;
            da.DataProvider = DataProviders.YahooFinance;
            da.StartDate = dateTimePicker1.Value;

            downloader.RunWorkerAsync(da);

            bAdd.Enabled = false;
        }