1

私は 3 つのフォームを持っていますform1, form2, form3.form1 が最初にロード/実行されます。ボタンを押すと、テキストボックスを持つform1新しいform2ものが開きます。テキストボックスをクリックすると、form3複数の行を含むデータグリッドビューが開きます。

そのため、コンテキスト メニュー ストリップを使用しform3、項目に select という名前を付けました。たとえば、datagridview 行を選択し、contextmenustrip 項目選択を選択した場合 (datagridview には名前とピン コードの 2 つの列があるとします)、ピン コードを出力する必要があります。に存在するテキストボックスform2。試しましたが、何も起こりませんでした。

form1ボタンクリックイベント

    private void AddBusMasterBtn_Click(object sender, EventArgs e)
    {
        this.Hide();
        Form2 Obj = new Form2();
        Obj.ShowDialog();
        this.Show();
    }

form2テキストボックスがあり、クリックするとデータグリッドビューとコンテキストメニューストリップが含まれる新しいフォームが開き、アイテム選択でストリップを選択すると、選択した行アイテムをテキストボックスのテキストボックスに配置する必要がありますform2

    private void FromStopIDtextBox_Click(object sender, EventArgs e)
    {
        Form3 obj = new Form3();
        obj.ShowDialog();
    }

これは選択コンテ​​キスト メニュー ストリップ項目です

    private void selectToolStripMenuItem_Click(object sender, EventArgs e)
    {
        int Row = dataGridView1.CurrentRow.Index;
        string StopId_var = dataGridView1[0, Row].Value.ToString();
        form2 obj = new form2();
        obj.textbox.text = StopId_var;

        this.Close();
    }
4

1 に答える 1

1
Form3 obj = new Form3(ref textBox);
obj.ShowDialog();

Form3参照として、Form2 からテキスト ボックスを取得するの 2 番目のコンストラクターを作成する必要があります。

 Textbox textbox;
    public Form3(ref TextBox _textbox)
    {
       InitializeComponents();
      textbox = _textbox;
    }

ここで、menuitem がクリックされたときに、現在クリックされている行の col 値の値をテキスト ボックスのテキストに割り当てる必要があります。

 private void selectToolStripMenuItem_Click(object sender, EventArgs e)
 {
        int Row = dataGridView1.CurrentRow.Index;
        string StopId_var = dataGridView1[0, Row].Value.ToString();
        textbox.Text = StopId_var;
        this.Close();
  }
于 2013-03-20T11:02:51.153 に答える