Если вы имеете в виду маскировку родительской формы, то не существует простого способа сделать это на самом деле. Я сделал это, создав прозрачную форму поверх родительской формы, а затем открыл другую пользовательскую форму в виде диалогового окна на верхняя часть окна поддельной маски.
как-то так, где window
- это ваше всплывающее окно, а owner
форма, которая будет замаскирована:
Mask = new LayerWindow();
Mask.Show(owner);
window.Show(Mask);
вот что я использую как маску:
public class LayerWindow : Form
{
public LayerWindow()
{
FormBorderStyle = FormBorderStyle.None;
StartPosition = FormStartPosition.Manual;
TransparencyKey = Color.Fuchsia;
base.BackColor = Color.Black;
Opacity = 0.50;
ShowInTaskbar = false;
}
public void Show(Control parent)
{
if (parent == null)
throw new ApplicationException("No parent provided");
var container = parent.FindForm();
if (container == null)
throw new ApplicationException("No parent Form found. Make sure that the control is contained in a form before showing a popup.");
Location = PointToScreen(container.Location);
Bounds = container.Bounds;
Owner = container;
Owner.Enabled = false;
base.Show(container);
}
public void Unmask()
{
if (Owner != null)
Owner.Enabled = true;
Hide();
}