我想运行我的表单(所有控件禁用了所有控件),然后将有另一个用于用户名和密码作为showdialog的表单!人们将无法在没有登录的情况下进入主表单!

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

我尝试了上面的代码,它的剂量无法正常工作!

我如何按照自己的需求来实现它?

干杯

有帮助吗?

解决方案

从父母表格:

childForm.ShowDialog(this);

这将使子形式成为父母表格。就位置而言,表格中有一个属性(您要在子表单上设置),该属性告诉它从哪里开始(中心屏幕,中间父母等)

system.windows.forms.form实现了IWIN32Window,这就是为什么它起作用的原因。

其他提示

目前尚不清楚问题/问题是什么,但是您可以尝试确保您通过父母形式,即

using(var childForm = new MySpecialLoginForm(...)) {
    childForm.ShowDialog(this);
}

嗯...

DialogResult result = mySecondForm.ShowDialog()

这将禁用父母表格,直到关闭。 Dialogresult将是一个枚举值,例如OK/CANCAL/YESNO等

如果我想做STH,我通常会使用以下模式。表格满载后:

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);
    }
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top