c # запустить форму, а затем показать другую форму с помощью showDialog? - PullRequest
0 голосов
/ 06 декабря 2010

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

 private void Form1_Load(object sender, EventArgs e)
        {
            this.Show();
            Form2 f2 = new Form2 ();
            f2.ShowDialog();
        }

Я попробовал приведенный выше код, и он не работает должным образом!

как мне этого добиться способомМне нужно?

ура

Ответы [ 4 ]

2 голосов
/ 06 декабря 2010

Непонятно, в чем заключается проблема / вопрос, но вы можете попытаться убедиться, что передали родительскую форму, т.е.

using(var childForm = new MySpecialLoginForm(...)) {
    childForm.ShowDialog(this);
}
2 голосов
/ 06 декабря 2010

Из родительской формы:

childForm.ShowDialog(this);

Это сделает дочернюю форму модальной по отношению к родительской форме. Что касается расположения, существует свойство вне формы (которое вы хотите установить в дочерней форме), которое сообщает ему, с чего начать (центральный экран, центральный родитель и т. Д.)

System.Windows.Forms.Form реализует IWin32Window, поэтому он работает.

0 голосов
/ 06 декабря 2010

Обычно я использую следующий шаблон, если я хочу сделать что-либо. после полной загрузки формы:

public partial class BaseForm : Form
{
    public event EventHandler Loaded;

    protected override void OnLoad(EventArgs e)
    {
        base.OnLoad(e);

        Application.Idle += OnLoaded;
    }

    protected void OnLoaded(object sender, EventArgs e)
    {
        Application.Idle -= OnLoaded;

        if (Loaded != null)
        {
            Loaded(sender, e);
        }
    }
}

Если я получу свою основную форму из BaseForm, у меня будет событие Loaded, которое в вашем случае я бы использовал следующим образом.

static class Program
{

    [STAThread]
    static void Main()
    {
        var mainForm = new MainForm();
        mainForm.Loaded += (sender, e) => { new LoginDialog().ShowDialog(mainForm); };

        Application.Run(mainForm);
    }
}
0 голосов
/ 06 декабря 2010

erm ...

DialogResult result = mySecondForm.ShowDialog()

Это отключит родительскую форму, пока эта форма не будет закрыта.DialogResult будет значением перечисления, которое выглядит как OK / Cancel / YesNo и т. Д.

...