Стиль лайтбокса Диалог модели в форме окна C # - PullRequest
0 голосов
/ 04 июля 2011

Я хочу показать диалоговое окно модели в стиле лайтбокс в форме окна c #. Мое диалоговое окно появится из события Click кнопки дочерней формы MDI. Как это сделать? Пожалуйста, помогите мне.

1 Ответ

0 голосов
/ 04 июля 2011

Если вы имеете в виду маскировку родительской формы, то не существует простого способа сделать это на самом деле. Я сделал это, создав прозрачную форму поверх родительской формы, а затем открыл другую пользовательскую форму в виде диалогового окна на верхняя часть окна поддельной маски.

как-то так, где 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();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...