我在Visual Studio 2012中创建了一个水晶报表,但我一直收到错误
an unhandled exception of type 'system.stackoverflowexception' occurred in system.windows.forms.dll
这是表格4的代码:
public partial class Form4 : Form
{
public Form4()
{
InitializeComponent();
}
private void Form4_Load(object sender, EventArgs e)
{
CrystalReport1 r = new CrystalReport1();
maintenance_productDataSetTableAdapters.COLOR_TYPETableAdapter ta = new EBL.maintenance_productDataSetTableAdapters.COLOR_TYPETableAdapter();
maintenance_productDataSet.COLOR_TYPEDataTable table = ta.GetData();
r.SetDataSource(table.DefaultView);
crystalReportViewer1.ReportSource = r;
crystalReportViewer1.Refresh();
}
}
当我开始运行VS 2012时,Form4是一个负载。
我也尝试使用DataSet,但它有相同的错误。使用DataSet的代码:
CrystalReport1 rep = new CrystalReport1();
DataSet1TableAdapters.COLOR_TYPETableAdapter ta = new Weeak.DataSet1TableAdapters.COLOR_TYPETableAdapter();
DataSet1.COLOR_TYPEDataTable table = ta.GetData();
rep.SetDataSource(table.DefaultView);
crystalReportViewer1.ReportSource = rep;
crystalReportViewer1.Refresh();
答案 0 :(得分:1)
由于Crystal Report是使用早期版本的.NET Framework开发的,因此您需要将这些行添加到app.config
文件中:
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
答案 1 :(得分:0)
这里可能发生的事情是发生以下事件
InitializeComponent
来电CreateControl
CreateControl
提出Load
事件Form4_Load
最终调用Refresh
,最终调用CreateControl
此时,步骤2和3相互相互递归并最终导致堆栈溢出异常。要解决此问题,只需将代码从Form4_Load
方法移到构造函数中的InitializeComponent
调用之后立即