c#运行表单,然后用Showdialog显示另一个表单?
-
09-10-2019 - |
题
我想运行我的表单(所有控件禁用了所有控件),然后将有另一个用于用户名和密码作为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);
}
}
不隶属于 StackOverflow