我想运行我的表单(禁用所有控件) 在它上面会有另一个用户名和密码的表格作为showDialog运行! 没有登录,人们将无法进入主表单!
private void Form1_Load(object sender, EventArgs e)
{
this.Show();
Form2 f2 = new Form2 ();
f2.ShowDialog();
}
我尝试了上面的代码并且它不能正常工作!
我如何以我需要的方式实现它?
欢呼声
答案 0 :(得分:2)
目前尚不清楚问题/问题是什么,但您可以尝试确保传递父母形式,即
using(var childForm = new MySpecialLoginForm(...)) {
childForm.ShowDialog(this);
}
答案 1 :(得分:2)
来自父表格:
childForm.ShowDialog(this);
这将使子表格成为父表单的模态。就位置而言,表格中有一个属性(您希望在子表单上设置),告诉它从哪里开始(中心屏幕,中心父级等)
System.Windows.Forms.Form实现了IWin32Window,这就是它工作的原因。
答案 2 :(得分:0)
... ERM
DialogResult result = mySecondForm.ShowDialog()
这将禁用父窗体,直到关闭此窗体。 DialogResult将是一个枚举值,类似于OK / Cancel / YesNo等
答案 3 :(得分:0)
如果我想做某事,我通常会使用以下模式。 Form完全加载后:
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);
}
}