我正在使用C#Winforms开发具有系统登录名的应用程序,该应用程序有两种形式,一种是主MainForm
,另一种是用于登录LoginForm
。
此应用程序具有Modern Flat UI Design
界面,因此它希望LoginForm form
显示在MainForm
表单的前面,不要在任务栏中显示其图标,并且不允许用户与MainForm
进行交互以显示已使用方法ShowDialog();
。
LoginForm
压缩代码:
public partial class LoginForm : Form
{
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
this.ShowInTaskbar = this.ShowIcon = false;
}
}
MainForm
压缩代码:
public partial class MainForm : Form
{
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
new LoginForm().ShowDialog();
//new LoginForm().ShowDialog(this);
}
protected override void OnShown(EventArgs e)
{
base.OnShown(e);
//new LoginForm().ShowDialog();
//new LoginForm().ShowDialog(this);
}
}
我的问题是没有什么可以启动MainForm
的过程,显示LoginForm
大约2秒钟,然后将其隐藏,然后,我最小化MainForm
来验证{{1 }}并未落后于LoginForm
,但事实证明MainForm
不存在。
如果我删除属性LoginForm
,则一切正常,但是ShowInTaskbar = false;
显示在任务栏中,这正是我所不希望的。
因此,如何在任务栏上没有出现LoginForm
的情况下在LoginForm
前面显示我的MainForm
?
注意:
是的,虽然LoginForm
尚未关闭,但用户无法与LoginForm
进行交互,并且关闭MainForm
的唯一方法是正确记录日志或单击按钮关闭{{1 }}呼叫LoginForm
。
此外,我尝试隐藏LoginForm
以Application.Exit();
开头,但同样MainForm
消失了。
答案 0 :(得分:1)
在对话框的构造函数中设置ShowInTaskBar
和ShowIcon
:
public partial class LoginForm : Form
{
public LoginForm()
{
InitializeComponent();
this.ShowInTaskbar = false;
this.ShowIcon = false;
}
}
然后以主要形式的Shown
方法显示它:
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
}
protected override void OnShown(EventArgs e)
{
base.OnShown(e);
new LoginForm().ShowDialog();
}
}
答案 1 :(得分:0)
您可以尝试将登录表单的父级设置为主表单。