Код: Выделить всё
public partial class EstimateDS
{
StiReport report = new StiReport();
...
///
/// Открыть смету в режиме дизайна
///
public void Design()
{
report.RegData(dsName, ds);
Thread t = new Thread(new ThreadStart(openDesign));
t.SetApartmentState(ApartmentState.STA);
t.Start();
}
[STAThread]
private void openDesign()
{
report.Design();
}
///
/// Загрузить шаблон отчета из mrt-файла
///
/// полный путь, указывающий файл шаблона
public void Load(string fullPath)
{
this.report.Load(fullPath);
}
///
/// Открыть отчет в предварительном просмотре
///
public void Show()
{
report.RegData(dsName, ds);
report.Show();
}
}
Код: Выделить всё
EstimateDS obj;
...
private void Show_Click(object sender, EventArgs e)
{
try
{
Thread thrShow = new Thread(obj.Show);
thrShow.SetApartmentState(ApartmentState.STA);
thrShow.Start();
}
catch (Exception)
{
MessageBox.Show("Сначала нужно создать DataSet и залить в него данные",
"Внимание!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
если заменю метод на этот:
Код: Выделить всё
private void Show_Click(object sender, EventArgs e)
{
try
{
obj.Show();
}
catch (Exception)
{
MessageBox.Show("Сначала нужно создать DataSet и залить в него данные",
"Внимание!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
Почему в случае использования потока получается ерунда?