0
現在、私はいくつかのアイテム情報を表示するプログラムを持っています。私が持っているのはcom box
で、別のカテゴリを行使し、1パネルは選択あたりのアイテムをcom box
に表示することです。C#のパネルにカスタムコントロールを追加すると、ウィンドウ作成の例外を処理する方法は?
独自のカスタムコントロールを作成して表示しましたが、パネルに動的に追加すると、Create Window handle Error
というWin32 Exception
が表示されます。
何度かテストした後、パネルに合計1800個のカスタムコントロールがリストされているのに気付きましたが、例外が発生します。この問題を解決できる人はいますか?ありがとう。
private void DisplayItems(List<ITEM_DATA> ItemList)
{
DisposeControls();
int total = ItemList.Count;
ItemDisplayer itemDisplayer = null;
Application.DoEvents();
for (int i = 0; i < total/4 + 1; i++)
{
for (int j = 0; j < 4; j++)
{
int m = (i * 4) + j;
if (m >= total)
{
return;
}
itemDisplayer = new ItemDisplayer(ItemList[m], ref labItemName);
itemDisplayer.Size = new Size(240, 80);
itemDisplayer.Location = new Point(240 * j, 80 * i);
itemDisplayer.Name = "itemDisplayer" + Convert.ToString(m);
pnlItems.Controls.Add(itemDisplayer);
}
}
}
あなたが使用するプログラムのすべての*は、65535のWindowsのハード上限を持っている*によって作成されたプログラムは、その不公平なシェアを取ることができないことを保証することができますウィンドウの合計数によると
合計を10000に制限します。この制限を超えると、この例外が発生します。たぶんあなたがコントロールを漏らしている、タスクマネージャーを使用して合計を見ることができるようにユーザーオブジェクトの列を追加します。しかし、あなたがよりスマートなコードを書くために必要な高い確率、1800はすでにかなり不合理です。 –
はい、私はあなたの提案に従った。問題はユーザーオブジェクトが10000に達したことです。解決方法はありますか?ありがとう –