1

テキスト値を送信するC#テキストボックス。状況、私は 2 つのフォームを持っています。フォーム 1 とフォーム 2。Form1 はテキストボックスを取得し、form2 はテキストボックスとボタンを取得しました。form2 テキストボックスにテキスト値を入力し、form2 ボタンをクリックすると、form2 テキストボックスの値が送信され、form1 テキストボックスの値が変更されます....助けが必要です. .

これは私がやったことです..私はそれを要約するつもりです

Form1 には textbox1 だけでコードはありません

これはform2ボタンのコードです

  private void change_Click(object sender, EventArgs e)
        {
         form1 frm1 = new form();
         string test = textbox2.text
         frm1.textbox.text = test;



}

値が合格かどうかを確認するためにいくつかのポップメッセージボックスを試してみてください...そしてこれまでのところ、値は本当に合格でしたが、UIに変更はありません

4

7 に答える 7

2

( 内からForm2の子として作成すると仮定すると、 のようなことを行い、親内から子フォームのパブリック プロパティにアクセスできます。そのため、toのアクセシビリティを必ず設定し、次のようにします。Form1Form1Form2 from = new Form2();TextBoxpublic

var form = new Form2();
form.ShowDialog();
this.TextBox1.Text = form.TextBox1.Text;
于 2012-11-20T01:25:27.047 に答える
1

Form1 のテキスト ボックスを public として宣言すると、form2 からアクセスできます。form1.textBoxName.propertyName

于 2012-11-20T01:18:32.843 に答える
1

これにはイベントを使用できます。

インターフェイスを定義します。

public interface ITextChange
{
    event EventHandler SomeTextChanged;
}

次に、ボタンを使用してこのインターフェイスを実装し、テキスト ボックスの値を最初のパラメーターとして渡してボタン クリック時にイベントを発生させます。

public partial class Form1 : Form, ITextChange
{
    public event EventHandler SomeTextChanged = delegate { };

    public Form1 () {}

    private void button1_Click(object sender, EventArgs e)
    {
        SomeTextChanged(textBox1.Text, null);
    }
}

このフォームのインスタンスを次のように 2 番目のフォームに渡します。

public partial class Form2 : Form
{
    public Form2(ITextChange f)
    {
        InitializeComponent();
        f.SomeTextChanged += new EventHandler(f_SomeTextChanged);
    }

    void f_SomeTextChanged(object sender, EventArgs e)
    {
        textBox1.Text = sender.ToString();
    }
}

したがって、Form2 を作成するときは、Form1 のインスタンスを渡す必要があります。

Form2 f = new Form2(form1);

ボタンを押すとすぐに、2 番目のフォームのテキスト ボックスに値が自動的に取得されます。

PS: 詳細については、イベント チュートリアルを参照してください。

于 2012-11-20T01:22:12.460 に答える
0

.Tag プロパティを使用できます (ここで私の質問を見てください 。簡単な方法は次のとおりです。form2 の textBox.text が form1 の texBox.text を置き換えると言いましたよね? form2 でこれを行います。

try
{
    private void change_Click(object sender, EventArgs e)
    {
         form2 frm2 = new form();
         frm2.Tag = this.textbox2.text;
         frm2.ShowDialog();
    }
}
catch (Exception ex)
{
   MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}

次に、フォーム1をロードするときにこれを書き込みます

string myText = (string)this.Tag;
   this.textbox1.text = myText;
于 2012-11-21T03:04:25.273 に答える
0

TextBox を公開することで、Form2 の Form1 の知識に依存できます。しかし、私の意見では、それを行う適切な方法は、カスタム イベント ハンドラーを作成し、Form2 でそれをサブスクライブし、テキストを eventarg として渡すことです。このMSDNの記事を基にしたコード

フォーム1

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            Form2 frm2 = new Form2();
            frm2.RaiseCustomEvent+=new CustomEventHandler(frm2_RaiseCustomEvent);
            frm2.Show(this);
        }

        void frm2_RaiseCustomEvent(object sender, CustomEventArgs a)
        {
            textBox1.Text = a.Message;
        }
    }
}

フォーム2

namespace WindowsFormsApplication1
{
    public delegate void CustomEventHandler(object sender, CustomEventArgs a);

    public partial class Form2 : Form
    {
        public event CustomEventHandler RaiseCustomEvent;
        public Form2()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            RaiseCustomEvent(this, new CustomEventArgs(textBox1.Text));
        }
    }

    public class CustomEventArgs : EventArgs
    {
        public CustomEventArgs(string s)
        {
            msg = s;
        }
        private string msg;
        public string Message
        {
            get { return msg; }
        }
    }
}
于 2012-11-20T01:30:25.820 に答える
0

form1 の新しいインスタンスを初期化したために form1.textbox1 が更新されなかった理由

form1 frm1 = new form();

したがって、画面上にある form1 を更新するには、そのインスタンスを form2 に挿入する必要があります。たとえば、form2 を表示するときは設定します。

form2.Form1 = currentForm1Instance;

お役に立てれば。

于 2014-02-13T10:12:10.900 に答える
-1

私も同じ疑問を持っていたので、インターネットで検索したところ、C# でフォーム間で変数値を渡す良い方法が見つかりました。何もありませんが、最初のフォームで変数を割り当てるだけで、どのフォームからでもその変数にアクセスできます。「フォームに値を渡す方法」に関するビデオチュートリアルを作成しました

以下のリンクにアクセスして、ビデオ チュートリアルをご覧ください。

Visual C# で Textbox テキストを別のフォームに渡す

于 2014-02-13T10:04:18.313 に答える