0

コントロールテキストボックスに単純な変数をバインドしようとしていますが、これを機能させることはできません。これは、データグリッドを使用した 2 つのフォーム 1 と、2 つのテキストボックスを使用したもう 1 つのシナリオです。データグリッドをクリックすると、それらの変数を FORM1 のテキスト ボックスに渡したいと思います。これは私が試したもので、結果はありません。私の形で1

public string myText
    {
        get { return tuidInput.Text; }
        set { tuidInput.Text = value; }
    } 

次に、値を設定しようとすると、フォーム2がこれを試します。

private void selectUser(object sender, DataGridViewCellEventArgs e)
    {
        userPicked.tuid = dataGridView1.Rows[dataGridView1.CurrentCell.RowIndex].Cells["spriden_id"].Value.ToString();
        userPicked.Name =  dataGridView1.Rows[dataGridView1.CurrentCell.RowIndex].Cells["spriden_last_name"].Value.ToString();

        Form1 form1 = new Form1();

        form1.myText = userPicked.tuid
     }

私はここからその例を得ましたhttp://social.msdn.microsoft.com/forums/en-US/csharpgeneral/thread/7308639f-640b-48bf-8293-abcbfd2292d8/

ただし、テキストボックスは更新されませんか? 私はどうすればいいですか?

私は何を間違っていますか?これを正しく行うにはどうすればよいですか。ここでいくつかの記事を見てきましたが、どれも成功していません。どんな助けでも大歓迎です。

4

3 に答える 3

1

それが事実かどうかはわかりませんが、
form1.myText = userPicked.tuid
1行上で初期化された、新しく作成された Form1 オブジェクトを参照しています。プロパティを確認form1.myTextすると、おそらく値が割り当てられていることに気付くでしょうが、実際に参照したいフォーム オブジェクトではありません。テキスト ボックスが Form2 にある場合は、Form1 に Form2 参照を作成します。 private Form2 form2 = null;
そして、プロパティを作成します

public Form2 SecondForm { set { this.form2 = value; } } 適切に割り当ててからform2.tuidInput.Text、Form1 で通常どおり使用します。

于 2013-04-09T02:00:51.233 に答える
0

やってみました:

Form1 form1 = new Form1();
form1.myText.Text = userPicked.tuid;
form1.myText.Refresh();
form1.Show();

再読み込みした後、テキスト ボックスを再描画する必要がある場合があります。

また、あなたはこれを正しくしたいと言いました。それを「正しく」行うには(「正しい」は非常に多くの異なる人々によって非常に多くの方法で解釈される可能性があるため、大まかに言います!)-これを行う代わりに、MVP、MVVM、またはMVCパターンを使用してこれを処理することをお勧めしますGUI のビジネス ロジック。

MVP の例: http://haacked.com/archive/2006/08/09/ASP.NETSupervisingControllerModelViewPresenterFromSchematicToUnitTestsToCode.aspx

于 2013-04-09T02:02:51.203 に答える
0

上記の回答のどれも質問に答えていません。最終的にここで回答を見つけ ましする。テキストボックスを public に変更してから、これを form2 から実行したところ、うまく機能しました。

Form1 form1 = (Form1)Application.OpenForms["Form1"];

ご回答ありがとうございます。ミゲル

于 2013-04-09T14:22:11.623 に答える