私はC#を初めて使用します。この質問はよくある質問ですが、本当に時間がかかります。このシナリオでは、プロジェクトをさらに進めることはできません。
必要なのは、form1 のメソッドを button_Click イベントで呼び出して、form2 リストビューから form1 テキストボックスに値を渡したいだけです。一方、コードをトリガーするボタンをクリックすると、何も表示されません。
遭遇した問題:
1: Form1 f1 = New Form1() を宣言すると、コンパイラは Form2 の Button_Click イベントでメソッドが呼び出されるコードをコンパイルします。しかし、ボタンをクリックしても、テキストボックスには何も変化がありません。
2: Form1 を Public Form1 f1; として宣言し、ボタンをクリックすると NullReferenceException が発生します。
3: Form2 を ShowDialog(); として表示する必要があります。
どんな助けでも大歓迎です。
Form1 の私のコード
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Globalization;
using System.Threading;
namespace Practice_CS
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnViewList_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2();
f2.ShowDialog();
}
public void setFields(string sName,string sAge,string sGender) {
txtName.Text = sName;
txtAge.Text = sAge;
txtGender.Text = sGender;
}
}
}
Form2 の私のコード
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Practice_CS
{
public partial class Form2 : System.Windows.Forms.Form
{
public Form2()
{
InitializeComponent();
}
private void Form2_Load(object sender, EventArgs e)
{
lvlist.Items.Add("Juli");
lvlist.Items[0].SubItems.Add("20");
lvlist.Items[0].SubItems.Add("Male");
lvlist.Items.Add("Mark");
lvlist.Items[1].SubItems.Add("21");
lvlist.Items[1].SubItems.Add("Male");
lvlist.Items.Add("Shiela");
lvlist.Items[2].SubItems.Add("18");
lvlist.Items[2].SubItems.Add("Female");
}
private void btnSelect_Click(object sender, EventArgs e)
{
if (lvlist.Items.Count < 1) { return; }
Form1 f1 = new Form1();
f1.setFields(lvlist.FocusedItem.Text, lvlist.FocusedItem.SubItems[1].Text, lvlist.FocusedItem.SubItems[2].Text);
this.Close();
}
private void lvlist_DoubleClick(object sender, EventArgs e)
{
btnSelect_Click(btnSelect, e);
}
}
}