Я пытаюсь создать эффект лайтбокса в моем приложении. Для этого у меня есть UserControl с панелью, представляющей полупрозрачный оверлей, и отдельной панелью, на которой размещен весь необходимый контент.
Когда я показываю этот UserControl, он часто пытается сделать себя 2-3 раза, в результате чего фон становится темнее и темнее. Я думал о том, чтобы сделать следующее в UserControl
protected override void OnPaint ( PaintEventArgs e )
{
if ( Parent != null )
{
Parent.Refresh();
}
base.OnPaint( e );
}
к сожалению, это, кажется, вызывает ужасный эффект петли, в результате чего родительский элемент red-raws сам, а затем UserControl перерисовывает сам себя ... очень грязно. Есть ли способ как-то остановить это? возможно, взяв изображение с экрана для печати из приложения и отобразив его в пользовательском элементе управления с оверлеем?
EDIT
Я заметил этот вопрос , хотя я надеюсь, что мне не нужно создавать новую форму для каждого лайтбокса, который я создаю!