0

(すべてのコントロールを無効にして)フォームを実行したいのですが、その上に、showDialogとして実行されるユーザー名とパスワード用の別のフォームがあります。ログインせずにメインフォームにアクセスすることはできません。

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

上記のコードを試しましたが、正常に機能しません。

どうすれば必要な方法でそれを達成できますか?

乾杯

4

4 に答える 4

2

問題/質問が何であるかは明確ではありませんが、親フォームで渡すことを確認してみてください。

using(var childForm = new MySpecialLoginForm(...)) {
    childForm.ShowDialog(this);
}
于 2010-12-06T13:25:11.730 に答える
2

親フォームから:

childForm.ShowDialog(this);

これにより、子フォームが親フォームに対してモーダルになります。場所に関する限り、フォームの外にあるプロパティ(子フォームに設定する必要があります)があり、どこから開始するか(中央の画面、中央の親など)を指定します。

System.Windows.Forms.FormはIWin32Windowを実装しているため、これが機能します。

于 2010-12-06T13:26:41.447 に答える
0

えーと...

DialogResult result = mySecondForm.ShowDialog()

これにより、このフォームが閉じられるまで親フォームが無効になります。DialogResultは、OK / Cancel/YesNoなどの列挙値になります

于 2010-12-06T13:24:58.713 に答える
0

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);
    }
}
于 2010-12-06T13:34:08.033 に答える