我有一个面板,在其中我根据软件逻辑添加和删除列表中包含的按钮,如下所示(简化):
Panel.Controls.Clear();
Panel.Controls.Add(Buttons[Index1]);
Panel.Controls.Add(Buttons[Index2]);
...
在我的IDE中,这就像一个魅力。相反,在客户端环境中,我发现GUI资源数量不断增加。几个小时后,我收到一个错误,因为没有更多的资源处理程序可用。
请注意,按钮是一个限制数字,我从父母那里清除它们但从不销毁或创建它们。它们只是添加和删除。因此,他们应该始终使用相同的图标GUI资源。看起来,每次我添加其中一个,insted,需要一个新的处理程序,而旧的处理程序仍然被卡住。
计算我做的处理程序
GetGuiResources(process.Handle, 0) + GetGuiResources(process.Handle, 1)
最初的数字大约是200.在我的开发环境中,它仍然是恒定的。在安装应用程序的客户端中,它会增长到3000,4000等等。
剪切按钮切换的代码是:
CommandsTableLayoutPanel.Controls.Clear();
CommandsTableLayoutPanel.RowStyles.Clear();
CommandsTableLayoutPanel.RowCount = 0;
foreach (Button Button in Buttons[GroupCode].Where(b => b.Visible))
{
CommandsTableLayoutPanel.Controls.Add(Button);
CommandsTableLayoutPanel.RowStyles.Add(new RowStyle { SizeType = SizeType.Percent, Height = 100 });
}
感谢。