0

form1のリストビューには、次の列の名前と電子メールがあり、次のようなデータがあるとします

NAME     EMAIL
adam     adam@gmail.com
james    james@gmail.com
kris     kris@gmail.com

このリストビューは form1 にあります。

リストビューには更新項目のあるコンテキストメニューがあり、フォーム1からジェームズ行を右クリックして選択すると、2つのテキストボックスを持つフォーム2がロードされ、リストビューの選択された行から名前と電子メールがそのテキストボックスに表示されるようになります

textbox1 = james
textbox2 = james@gmail.com

私が実際にしていることは。

form1 ive contextmenu でアイテムを更新します。updatecontextmenuをクリックすると、form2にテキストボックス名と電子メールが読み込まれます。リストビューには、上記のように名前と電子メールが含まれています。リストビューから選択した行の名前を form1 に配置して、それぞれテキストボックスと電子メールに名前を付けたいと思います。

私はこれを試しました。

フォーム1:

updateToolStripMenuItem_Click(...)
{

    Form3 update = new Form3();
    update.ShowDialog();            
}

フォーム3:

Form3_Load(...)
{
    Form1 f1 = new Form1();
    string oldName = f1.listView1.SelectedItems[0].SubItems[0].Text;
    string oldEmail = f1.listView1.SelectedItems[0].SubItems[0].Text;
    textBox1.Text = oldName.ToString();
    textBox2.Text = oldEmail.ToString();
}

しかし、エラー InvalidArgument=Value of '0' is not valid for 'index' を取得しています

4

1 に答える 1

1

2 番目のフォームのコンストラクターを次のように変更できます。

public Form2(string name, string email)
{ ... }

Form1 では、次のようになります。

Form2 update = new Form2(name, email);
于 2013-03-02T12:00:41.383 に答える