Не работает прогресс бар типа Marquee. По нажатию кнопку использую код:
progressBar.Visible = true;
progressBar.Style = ProgressBarStyle.Marquee;
progressBar.MarqueeAnimationSpeed = 30;
затем после всех запросов в базу в конце процедуры:
progressBar.Style = ProgressBarStyle.Continuous;
progressBar.MarqueeAnimationSpeed = 0;
progressBar.Visible = false;
Но прогресс бар не работает, хотя везде пишут, что этого достаточно. Окно открывается модально, в котором нажимается кнопку и на форме нарисован прогресс бар.
private void btnOK_Click(object sender, EventArgs e)
{
progressBar.Style = ProgressBarStyle.Marquee;
progressBar.MarqueeAnimationSpeed = 30;
progressBar.Visible = true;
string dt = dtPicker.Value.Date.ToString("dd.MM.yyyy");
string str_item = "";
foreach (object itemChecked in cklstBox.CheckedItems)
{
if (str_item != "")
{
str_item += ", ";
}
str_item += "'" + itemChecked.ToString() + "'";
}
if (str_item == "")
{
MessageBox.Show("Не выбрано ни одной компании!", "Ошибка!",
MessageBoxButtons.OK,
MessageBoxIcon.Error);
this.DialogResult = System.Windows.Forms.DialogResult.None;
return;
}
string sqlForCnt = "SELECT * FROM dbo.Clients WHERE ClientCode IN (" + str_item + ")";
string odbccon = this.ConnectionStr;
string filename = @"5.docx";
SqlConnection _con = new SqlConnection(odbccon);
_con.Open();
DataTable dtb;
//DataSet ds;
SqlDataAdapter adapter;
dtb = new DataTable();
using (adapter = new SqlDataAdapter(sqlForCnt, _con))
{
adapter.Fill(dtb);
}
_con.Close();
foreach (System.Data.DataRow rw in dtb.Rows)
{
try
{
string fName = RiskReportPath + @"\";
if (!Directory.Exists(fName + dt))
{
Directory.CreateDirectory(fName + dt);
}
string fout = fName + dt + @"\" + reportfilename + @".docx";
//здесь идут куча запросов в базу и формирование xml
rtfgen r = new rtfgen(filename, (string)rw[0], dt, klientcode.Replace("_", "").Replace("-", "") + dt.Replace(".", ""), odbccon);
if (File.Exists(fout))
{
File.Delete(fout);
}
r.WriteTo(fout);
progressBar.MarqueeAnimationSpeed = 0;
MessageBox.Show("Отчет по рискам сформирован успешно.", "Отчет по рискам!",
MessageBoxButtons.OK,
MessageBoxIcon.Information);
}
catch (Exception ex)
{
progressBar.Style = ProgressBarStyle.Continuous;
progressBar.MarqueeAnimationSpeed = 0;
progressBar.Visible = false;
throw ex;
}
}
}