перебирая ключи и значения вашего sums
словаря, чтобы создать новый список со всеми amicable numbers
решает проблему, вот фрагмент кода.
amicable_list=[]
for i in sums.keys():
if i in sums.values():
if (sums.get(sums.get(i,-1),-1) == i) and (i != sums[i]):
amicable_list.append(i)
SuspendLayout ()
и ResumeLayout ()
не приостанавливают рисование, только операции макета. Дайте этому парню шанс:
public static class ControlHelper
{
#region Redraw Suspend/Resume
[DllImport("user32.dll", EntryPoint = "SendMessageA", ExactSpelling = true, CharSet = CharSet.Ansi, SetLastError = true)]
private static extern int SendMessage(IntPtr hwnd, int wMsg, int wParam, int lParam);
private const int WM_SETREDRAW = 0xB;
public static void SuspendDrawing(this Control target)
{
SendMessage(target.Handle, WM_SETREDRAW, 0, 0);
}
public static void ResumeDrawing(this Control target) { ResumeDrawing(target, true); }
public static void ResumeDrawing(this Control target, bool redraw)
{
SendMessage(target.Handle, WM_SETREDRAW, 1, 0);
if (redraw)
{
target.Refresh();
}
}
#endregion
}
Использование должно быть достаточно понятным, а синтаксис идентичен SuspendLayout ()
и ResumeLayout ()
. Это методы расширения, которые будут отображаться в любом экземпляре Control.
Для меня сообщение Загрузка формы происходит медленно, если добавление фонового изображения решило проблему:
Убедитесь, что ваш цвет фона не установлен на «прозрачный». Установите «белый» для лучшей производительности.
Также сделайте BackgroundImageLayout либо «Center», либо « Stretch » для повышения производительности. Это включит двойной буфер в форме.