0

私のwinformアプリケーションでは; ログインフォームとメインフォームがあります。

プログラムを実行すると、ログインフォームが一番上に、メインフォームがその後ろに表示されます。

もう1つ、ユーザー名とパスワードで適切にログインしない限り、メインフォームにはアクセスできず、ログインフォームのみにアクセスできるはずです。

私の言語は C#.Net です。

これを達成する方法についてアイデアを提供してください。

4

2 に答える 2

2

イベント (フォームが最初に表示されるたびに発生Form.ShowDialogします) で (フォームをモーダル ダイアログ ボックスとして表示します) を使用します。Form.OnShown

private void Form1_Load(object sender, EventArgs e)
{
    this.Shown += Form1_Shown;
}

private void Form1_Shown(object sender, EventArgs e)
{
    LoginForm loginForm  = new LoginForm ();

    if (loginForm.ShowDialog() == DialogResult.Ok)
    {
     ....
    }
}

あなたProgramLoginFormこのように:

//Progrmm.cs
Application.Run(new Form1());

//LoginForm.cs
public partial class LoginForm : Form
{
    public LoginForm ()
    {
        InitializeComponent();
    }

    private void buttonLogin_Click(object sender, EventArgs e)
    {
        //check username password
        if(texboxUser == "user" && texboxPassword == "password")
        {
            DialogResult = DialogResult.OK;
            Close();
        }
        else
        {
            MessageBox.Show("Wrong user pass");
        }
    }
}
于 2012-07-30T06:48:07.987 に答える
0

私はあなたが提案したデザインが好きではありません.最初にログインフォームを表示し、次にメインフォームを表示したいと思います. しかし、絶対に必要な場合は、以下を実行できます..

メインクラスでは:

Application.Run(new frmMain());

そしてフォームクラスで:

private void frmMain_Load(object sender, EventArgs e)
{
    //---------------------------------------------


    System.Windows.Forms.Timer t = new System.Windows.Forms.Timer();
    t.Tick +=new EventHandler(t_Tick);
    t.Interval = 1000;
    t.Start();
}

void t_Tick(object sender, EventArgs e)
{
    frmLogin l = new frmLogin();
    if (l.ShowDialog(this) == DialogResult.Ok)
       ((System.Windows.Forms.Timer)sender.Dispose();
}

適切なユーザー名とパスワードなしでログインフォームが終了しないことをさらに確認する必要がありますが(それはあなた次第です)

System.Windows.Forms.Timer は同じスレッドで実行されるため、メイン フォームへの呼び出しがブロックされるため (System.Timers.Timer とは異なります)、System.Windows.Forms.Timer を使用します。

于 2012-07-30T06:39:21.327 に答える