C# 如何从另一种形式的文本框编辑列表框的内容

C# 如何从另一种形式的文本框编辑列表框的内容,c#,winforms,C#,Winforms,我正在创建一个图书馆应用程序,其中的列表框包含主窗体上的书籍列表。我已经为这些书创建了一个编辑表单。我希望能够通过更改编辑表单的文本框中的文本来更改列表框中所选项目的内容。有什么建议我可以这样做吗 主要形式: private void lstBooks_SelectedIndexChanged(object sender, EventArgs e) { string currentBook = lstBooks.SelectedItem.ToString();

我正在创建一个图书馆应用程序,其中的列表框包含主窗体上的书籍列表。我已经为这些书创建了一个编辑表单。我希望能够通过更改编辑表单的文本框中的文本来更改列表框中所选项目的内容。有什么建议我可以这样做吗

主要形式:

private void lstBooks_SelectedIndexChanged(object sender, EventArgs e)
    {
        string currentBook = lstBooks.SelectedItem.ToString();

    }

    private void btnEdit_Click(object sender, EventArgs e)
    {
        lstBooks_SelectedIndexChanged(null, null);
        frmEditBook tempEditBook = new frmEditBook(lstBooks);
        tempEditBook.Show();
        frmkeepBookstore.Hide();

    }
编辑表格:

private void frmEditBook_Load(object sender, EventArgs e)
    {
        txtName.Text = listBoxBooks.SelectedItem.ToString();
    }

private void btnSave_Click(object sender, EventArgs e)
    {
        listBoxBooks.Items.Add(txtName.Text.Replace);
        frmBookstore.frmkeepBookstore.Show();
        this.Close(); 
    }

如果用ShowDialog()而不是Show()调用新表单,可能会非常简单。在frmEditBook中,您应该定义属性

public string Txt {get; set;}
并将其设置为
btnSave\u单击

private void btnSave_Click(object sender, EventArgs e)
{
    listBoxBooks.Items.Add(txtName.Text);
    Txt = txtName.Text;
    frmBookstore.frmkeepBookstore.Show();
    this.Close(); 
}
并在编辑窗体关闭后使用变量:

private void btnEdit_Click(object sender, EventArgs e)
{
    lstBooks_SelectedIndexChanged(null, null);
    frmEditBook tempEditBook = new frmEditBook(lstBooks);
    tempEditBook.ShowDialog();

    //tempEditBook.Txt here is your text
    lstBooks.SelectedItem = tempEditBook.Txt;

    frmkeepBookstore.Hide();

}

在编辑表单中,为文本设置公共属性

public string NewText
{
    get
    {
        return txtName.Text;
    }
}
然后,在更改列表框中的项目时,只需使用以下过程

private void btnEdit_Click(object sender, EventArgs e)
{
    //Your code from above
    lstBooks_SelectedIndexChanged(null, null);
    frmEditBook tempEditBook = new frmEditBook(lstBooks);
    tempEditBook.Show();
    frmkeepBookstore.Hide();
    //My line
    lstBooks.Items[lstBooks.SelectedIndex] = tempEditBook.NewText;
}

这给了我以下错误:参数1:无法从“方法组”转换为“对象”无法将方法组“替换”转换为非委托类型“字符串”。是否要调用该方法?与“System.Windows.Forms.ListBox.ObjectCollection.Add(object)”最匹配的重载方法'有一些无效参数-我做错了什么?我收到了以下错误:“prjBooks.frmBookstore”不包含“NewText”的定义,并且找不到接受“prjBooks.frmBookstore”类型的第一个参数的扩展方法“NewText”(是否缺少using指令或程序集引用?)我怎样才能解决这个问题?我已经解决了^ ^,我在替换行中使用了错误的表单,对不起