未使用ImageList和自定义控件发布GUI资源

时间:2017-05-12 16:12:52

标签: c# winforms custom-controls imagelist

我有一个面板,在其中我根据软件逻辑添加和删除列表中包含的按钮,如下所示(简化):

Panel.Controls.Clear();
Panel.Controls.Add(Buttons[Index1]);
Panel.Controls.Add(Buttons[Index2]);
...

在我的IDE中,这就像一个魅力。相反,在客户端环境中,我发现GU​​I资源数量不断增加。几个小时后,我收到一个错误,因为没有更多的资源处理程序可用。

请注意,按钮是一个限制数字,我从父母那里清除它们但从不销毁或创建它们。它们只是添加和删除。因此,他们应该始终使用相同的图标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 });
    }

感谢。

0 个答案:

没有答案