尝试从一个窗体更新第二个窗体上的列表



我是第一学期的 c# 学生,试图在暑假期间学习,以便在秋季开学时领先。
我有一个多表单应用程序,我正在使用列表来存储信息和统计信息。
在表格一上,我有一个存储投球手名字的列表。这种形式称为 MainForm。 在第二个表单上,从 MainForm 上的按钮打开,我有两个用于名字和姓氏的文本框以及一个"添加投球手"按钮。
我希望能够在文本框中输入信息,并更新我在 MainForm 上创建的列表。 第二种形式称为AddBowlerForm。我已经为此工作了几天,我关注了很多教程和 youtube 视频,以至于我几乎迷失了我的起点。

我目前在MainForm上的代码:

private void MainForm_Load(object sender, EventArgs e)
{
//create list to hold names of bowlers
List<string> listBowlers = new List<string>();
ReadBowlers(listBowlers);
DisplayBowlers(listBowlers);
}
private void buttonAddBowler_Click(object sender, EventArgs e)
{
//create instance of AddBowlerForm
AddBowlerForm addBowler = new AddBowlerForm(this);
if (addBowler.ShowDialog(this) == DialogResult.OK)
{
listBowlers.items.add(addBowler.Bowler());
listBoxBowlers.Items.Add(AddBowlerForm.Bowler());
}
//Display the form.
addBowler.ShowDialog();

来自AddBowlerForm的相关代码:

public AddBowlerForm(MainForm mainForm)
{
InitializeComponent();
this.mainForm = mainForm;
}
public string Bowler
{
get
{
return textBoxFirstName.Text + textBoxLastName.Text;
}
}
private void buttonAdd_Click(object sender, EventArgs e)
{
DialogResult = DialogResult.OK;
}

我真的非常感谢这方面的任何和所有帮助。在过去的几天里,我阅读的网页比我记得的要多,但不确定我哪里出了问题。

你需要一个叫做处理程序的东西。

处理程序就像给对象的承诺,它说"当你调用此方法时,将有一个来处理它",即使执行处理的方法完全超出了调用处理程序的对象的范围。

因此,您的 NewBowler 表单需要在其构造函数中包含一个委托,该委托指向需要您需要输入的方法。因此,当您单击窗体上的提交按钮时,按钮调用的方法将引发您在构造函数中提供的"NewBowlerHandler()"事件。

然后,MainForm 上实际添加投球手的任何方法都将处理表单提供的输入。

如果需要有关委托、处理程序和事件的更多资源,可以在此处找到文档 事件处理程序委托

最新更新