我正在编写一个中等规模的WinForms应用程序……时不时会在创建某些窗体时出现此异常。
以前我曾经解决过这个问题,但并没有理解到底发生了什么。
令人困惑的是,昨天当我完成这个表单并测试它时,一切都运行得很好,现在我却遇到了以下错误:
未处理的类型为“System.OutOfMemoryException”的异常在System.Windows.Forms.dll中发生。 附加信息:创建窗口句柄时出错。
异常是在此代码块中抛出的:
更具体地说,这一行代码:this.dtpDatum.Value = DateTime.Today; 为什么?我不知道为什么会出现异常...
以前我曾经解决过这个问题,但并没有理解到底发生了什么。
令人困惑的是,昨天当我完成这个表单并测试它时,一切都运行得很好,现在我却遇到了以下错误:
未处理的类型为“System.OutOfMemoryException”的异常在System.Windows.Forms.dll中发生。 附加信息:创建窗口句柄时出错。
异常是在此代码块中抛出的:
public partial class PonovniIspisRacunaForm : Form
{
DataTable dnevniPrometTable;
DataTable kontrolnaTrakaTable;
DataTable ukupniDnevniPrometTable;
DataTable stavkeRacunaTable;
ZisCode.Hibernate.Mdb.DataModel dnevniPrometDataModel;
ZisCode.Hibernate.Mdb.DataModel kontrolnaTrakaDataModel;
OsnovniPodaci.Porezi.Stope stope;
string brojRacuna;
string ZKI;
string JIR;
string Operator;
//decimal ukupno = 0.00m;
decimal tarifa;
decimal kolicina;
decimal iznos;
decimal porez;
decimal porez25;
decimal porez05;
decimal porez13;
decimal povratnaUkupno;
decimal osnov25;
decimal osnov05;
decimal osnov13;
//decimal nabavna;
PrintDocument printDocument;
public PonovniIspisRacunaForm()
{
InitializeComponent();
}
private void FinancijskiRekapitular_Load(object sender, EventArgs e)
{
stope = new OsnovniPodaci.Porezi.Stope();
// popunjava današnji datum
this.dtpDatum.Value = DateTime.Today;
// Get Data Table za određeni datum:
dnevniPrometDataModel = ZisCode.DataModels.Get("DnevniPromet");
kontrolnaTrakaDataModel = ZisCode.DataModels.Get("KontrolnaTraka");
PrintSetup();
ukupniDnevniPrometTable = MergeDnevniKontrolna();
if (ukupniDnevniPrometTable.Rows.Count != 0)
{
FillComboBox();
}
}
private void FillComboBox()
{
cbBrojRacuna.DataSource = ZisCode.Methods.DataTableOperations.SortDataTable(ukupniDnevniPrometTable, "Dokument", "DESC") // orderbydescending
.AsEnumerable().GroupBy(row => row.Field<string>("Dokument")).Select(group => group.First()).CopyToDataTable(); // groupby brojRacuna-Dokument
cbBrojRacuna.DisplayMember = "Dokument"; // Broj Računa
cbBrojRacuna.ValueMember = "Dokument";
cbBrojRacuna.SelectedIndex = 0;
}
private void PrintSetup()
{
// priprema za ispis
printDocument = new PrintDocument();
printDocument.DefaultPageSettings.PaperSize = new PaperSize("Racun size", 295, 500);
printDocument.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(CreateRekapitular);
// uklanja poruku dialog box (printing ..) kod ispisa
PrintController printController = new StandardPrintController();
printDocument.PrintController = printController;
// popravlja font
printPreview.UseAntiAlias = true;
}
}
更具体地说,这一行代码:this.dtpDatum.Value = DateTime.Today; 为什么?我不知道为什么会出现异常...
我尝试在构造函数中设置dateTimePicker,但出现了与窗口句柄无关的不同异常。
我已经阅读了其他问题中的相关内容,但对我来说都没有太多帮助。
Winforms issue - Error creating window handle
这两个答案对我没有帮助,因为它们的回答过于含糊,并且期望我首先了解dispose应该如何工作。请帮帮我,我是一个n00b!
更新:按要求发布了该类的几乎所有代码。