Моя визуальная настройка проект студии, как это: На Форма «s панель добавить контроль пользователя (UC) с кодом:Многопоточность формы и пользовательский контроль
в Форма:
panel.Controls.Add(UC.Instance);
UC.Instance.Location = new Point(-(panel.Size.Width), 0);
UC.Instance.BringToFront();
roll_in();
в управления пользователя:
private static UC _instance;
public static UC Instance
{
get
{
if (_instance == null)
_instance = new UC();
return _instance;
}
}
При нажатии кнопки на формы управление пользователя добавляется к панели Form и я использую следующий код, чтобы скользить управление пользователя своей позиции:
private void roll_in()
{
while (UC.Instance.Location.X < panel.Location.X)
{
UC.Instance.Location = new Point((UC.Instance.Location.X + 2));
UC.Instance.Refresh();
if (UC.Instance.Location.X > -10)
System.Threading.Thread.Sleep(10);
}
}
Когда я используйте roll_in()
, все остальные функции и формы ждут завершения этого процесса.
Есть ли способ передвинуть User control
на другую тему? Я попытался позвонить roll_in()
с созданием другого потока, но он говорит, что элемент управления был создан в другом потоке.
Может ли кто-нибудь помочь мне направить меня на правильный путь? Как я могу сделать «анимацию» без влияния на другие элементы управления?
Спасибо помогает
Winforms + Анимации = WPF –
Помимо что я должен создать класс Animator с таймером внутри для обработки анимации. Animator.AnimateLocation (control: myControl, newLocation: new Point (x, y), продолжительность: TimeSpan.FromSeconds (2)) –