0

私は2つのフォームを持っています。に、テキストForm2ボックスとボタンがあります。ボタンを押すと、テキストボックスのテキストをテキストボックスのテキストボックスに追加しますForm1。これが私のコードです:

オンForm2:

private void button1_Click(object sender, EventArgs e)
{
    frm1.AppendTxt(textBox1.Text);
    this.Close();
}

オンForm1:

public void AppendTxt(string text)
{
    this.body.AppendText(text);
    MessageBox.Show(body.Text);
}

何らかの理由で、テキストが のテキスト ボックスに表示されませんForm1。ただし、ポップアップするメッセージ ボックスには、入力したテキストが表示されForm2ます。

4

6 に答える 6

0

form1とform2の2つのフォームがあります。2つのフォームが開いています。form2には、1つのテキストボックス(txt2)と1つのボタン(btn2)があります。form1には、1つのテキストボックス(txt1)があります。ユーザーがtxt2に何かを入力してbtn2をクリックすると、txt2のテキストがtxt1に追加されます。これはあなたが望むものですか?

はいの場合:form2で、デリゲートを作成する必要があります。

// Declare a delegate
public delegate void GetValue(string value);
// Declare event with delegate
public event GetValue btn2_Clicked;

次に、form2で、そのイベントを処理する関数を作成します。関数の名前は、宣言したイベントの名前と同じで、プレフィックス「On」を追加します。このような:

public void Onbtn2_Clicked(string value)
{
    if (btn2_Clicked != null)
    {
        btn2_Clicked(value);
    }
}

その後、btn2クリックイベントで、作成したばかりのイベントを発生させます。

private void btn2_Click(object sender, EventArgs e)
{
    Onbtn2_Clicked(txt2.Text);
}

わかりました、それはform2で行われます。form1をカムバックして終了:ユーザーがform1のボタン(btn1)をクリックすると、form2が開くと想定しているため、btn1のクリックイベントでは次のようになります。

private void btn1_Click(object sender, EventArgs e)
{
    // Create form2
    Form2 frm2 = new Form2();
    // Handle btn2 click
    frm2.btn2_Clicked += new Form2.GetValue(frm2_btn2_Clicked);
    // Show form2
    frm2.Show();

}

void frm2_btn2_Clicked(string value)
{
    // When btn2 is clicked, the text in txt2 will be assign to txt1
    txt1.Text = value;                
}

そして、テキストはform1のtxt1に割り当てられます

于 2012-04-30T02:29:07.890 に答える
0

テキストボックスのゲッターとセッターを作成して、フォームクラスの一部として公開し、最初にフォームオブジェクトとしてアクセスできるようにする必要があると思います

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

第二形態

Form1 form= new Form1();
 form.sometext = "some name";

ここに私が見つけた別の短い解決策がありますForm1でフォーム2を開始します

Form2 form2 = new Form2();
form2.Owner = (Form)this;
form2.Show();

そしてForm2の

this.Owner.Controls.Find("TextBox1",true).First().Text="Hi!!!!"
于 2012-04-30T02:06:27.033 に答える
0

試すbody.Text += " " + text;

于 2012-04-30T01:53:24.897 に答える
0

フォームからフォームへの値の受け渡し。

これを試すことができます。最初に、このようにすべてのフォームがアクセスできる変数を宣言できます。

string yourValue;

PS:あなたのクラスを宣言します

form1 から、そのクラスに値を渡すことができます。このような、

YourClass.yourValue = textbox1.text;

一度値を持ってください。のように2番目のフォームに渡します。

textbox2.text = YourClass.yourValue;

お役に立てば幸いです。:D

于 2012-04-30T02:11:50.813 に答える
0

Form2.designer.cs の txtBox をプライベートからパブリックに変更するだけではどうですか?

private System.Windows.Forms.TextBox textBox1;

public System.Windows.Forms.TextBox textBox1;

このようにして、Form2 で次のように送信できます。

Form1 frm1 = new Form1();

private void button1_Click (object sender, EventArgs e)
frm1.textBox1.AppendText(textBox2);

textBox2 は、Form2 にテキストを入力する場所です

于 2017-08-18T13:33:21.940 に答える
0

Form1ほとんどの場合、画面に表示されているインスタンスではなく、の非表示のコピー内のテキスト ボックスを変更しています。

Form1ハンドルをのコンストラクターに渡し、それをクラス メンバー変数 ( fieldForm2とも呼ばれます) に保存して、イベント ハンドラー内で使用してみてください。

于 2012-04-30T01:59:22.977 に答える