首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C#:如何防止主窗体过早显示

C#:如何防止主窗体过早显示
EN

Stack Overflow用户
提问于 2009-01-30 10:12:48
回答 4查看 6.8K关注 0票数 2

在我的main方法中,我像往常一样启动主窗体:

代码语言:javascript
运行
复制
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new MainForm());

在主要的表单加载的事情,我有以下内容,这将要求用户登录和东西。

代码语言:javascript
运行
复制
        using (loginForm)
        {
            DialogResult r = loginForm.ShowDialog();
            switch (r)
            {
                case DialogResult.OK:
                    break;
                default:
                    Application.Exit();
                    return;

            }
        }

我的问题是主窗体显示在背景中,我想让它,嗯……不。直到登录成功。我该怎么做呢?Application.Run()方法表示它会自动显示表单。是否有其他方法可以启动主窗体而不显示它?或者我必须在主窗体的构造函数中将visible设置为false,然后在登录完成后再设置回true,或者类似的设置?这样做的推荐方式是什么?登录表单的意图就像是一个组合的闪屏和登录。所以它首先加载并设置一些不同的东西,然后告诉用户登录。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-01-30 10:18:42

而不是:

代码语言:javascript
运行
复制
Application.Run(new MainForm());

尝试:

代码语言:javascript
运行
复制
LoginDialog // the class that handles login UI
  login = new LoginDialog ();

if (login.ShowDialog () == DialogResult.OK)
{
   // check credentials
   // if credentials OK
   Application.Run(new MainForm());
}

ShowDialog方法是一个阻塞调用,程序将暂停,直到对话框关闭以响应用户输入-通过按“确定”按钮或“取消”按钮。

票数 11
EN

Stack Overflow用户

发布于 2009-01-30 10:15:28

最简单的方法是使用Application.Run启动登录表单。当登录正常并设置好其他内容时,只需显示“main”表单即可。

代码语言:javascript
运行
复制
Application.Run(new LoginForm());

并在登录表单中单击OK按钮:

代码语言:javascript
运行
复制
this.Visible = false;
this.ShowInTaskbar = false;
MainForm mainForm = new MainForm();
mainForm.Show();
票数 2
EN

Stack Overflow用户

发布于 2009-01-30 11:46:34

我喜欢Skizz answer,但是如果这对你没有帮助,你也可以在MainForm的事件加载中这样做。只需将您的代码放在那里即可显示登录对话框。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/495026

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档