0

私はすでにこの回答について他の質問を検索しました(そして、それが私が行った限りの方法です)。最終結果を除いて、すべてが機能しているようです。エラーは発生していませんが、目的の入力が得られておらず、その理由がわかりません。

Form1 と login の 2 つのフォームがあります。Form1には、ボタンを押すとログイン時にテキストボックスから入力されたテキストを表示する「label2」というラベルがあります。これが私がこれまでに持っているコードです:

Form1 コード:

    public void SetTextForLabel(string myText)
    {
        this.label2.Text = myText;
    }

ログインコード:

    private void button1_Click(object sender, EventArgs e)
    {
        Form1.userName = textBox1.Text;
        Form1.password = textBox2.Text;

        Form1 frm = new Form1();
        frm.SetTextForLabel(textBox1.Text);

        this.Close();
    }

プログラムは動作します。form1 でログインをクリックすると、ログイン フォームが開きます。ユーザー名とパスワードを入力すると、入力が form1 変数に渡されます。form1 の label2 は公開されていないため、ログイン フォームで使用する public メソッドを作成して、label2.Text を変更しましたが、そうではなく、その理由もわかりません。どんな助けでも大歓迎です。

4

3 に答える 3

1

あなたの説明から判断すると、Form1 はログイン フォームを開き、ログイン フォームにbutton1はおそらくログイン ボタンがあると思います。

これがすべて正しい場合、論理が間違っていると思います。

ログインフォームを開くForm1のボタンは、次のことを行う必要があります

using(Login loginForm = new Login())
{
     if(DialogResult.OK == loginForm.ShowDialog())
     {
         SetTextForLabel(loginForm.TextAccessorProperty);
     }
     else
     {
          MessageBox.Show("Invalid login");
     }
}

次に、ログインフォームのボタンを1つだけ行う必要があります。

//Login logic
this.DialogResult = DialogResult.OK;
// (no need for form.close())
于 2013-05-31T21:08:11.560 に答える
0

あなたのコードは私にとってはうまくいきます.form1を表示するためにもう1行書くだけです.

すなわち

frm.Show();

うまくいくと思います。:)

于 2013-05-31T20:50:05.470 に答える
0

これにより の新しいインスタンスが作成されますがForm1、表示されていません。これは必要な参照ではないと思われます。

    Form1 frm = new Form1();
    frm.SetTextForLabel(textBox1.Text);
于 2013-05-31T20:41:16.473 に答える