Witam.
Mam problem z przekazaniem zmiennej z pętli for do funkcji aktualizującej progressbar.
using System;
using System.Net;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
namespace gallery_ripper
{
/// <summary>
/// Description of MainForm.
/// </summary>
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
}
public void Button1Click(object sender, EventArgs e)
{
string url = boxUrl.Text;
int start = int.Parse(boxStart.Text);
int end = int.Parse(boxEnd.Text);
string ltt = boxl10.Text;
string gtt = boxg10.Text;
int i;
string xadres;
string xfname;
for(i=start; i< (end + 1); i++)
{
if(i<10)
{
xadres = url + ltt + i + ".jpg";
xfname = i + ".jpg";
} else {
xadres = url + gtt + i + ".jpg";
xfname = i + ".jpg";
}
//MessageBox.Show(xadres);
pobierz(xadres, xfname);
}
MessageBox.Show("Zakonczono", "Gallery Ripper", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
public void pobierz(string adres, string filename)
{
WebClient webClient = new WebClient();
webClient.DownloadFileCompleted += new System.ComponentModel.AsyncCompletedEventHandler(webClient_DownloadFileCompleted);
webClient.DownloadProgressChanged += new DownloadProgressChangedEventHandler(webClient_DownloadProgressChanged);
try
{
webClient.DownloadFileAsync(new Uri(adres), filename);
}
catch (WebException e)
{
MessageBox.Show("Downloading ERROR!");
this.Close();
}
}
public void webClient_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
{
progressItem.Value = int.Parse(e.ProgressPercentage.ToString());
progressItem.Refresh();
}
public void webClient_DownloadFileCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e)
{
progressOverall.Value = (i * 100) / end;
progressOverall.Refresh();
}
}
}
Chciałbym po prostu w ostatniej funkcji odwołać się do zmiennej i oraz end, które były deklarowane przy wciskaniu buttona.
Jednak kompilator twierdzi, że Nazwa "end" nie istnieje w bieżącym kontekście.
W jaki sposób mogę "zrobić" te zmienne globalnymi ?