2

有一个重复的帖子,但问题没有得到回答。我的问题是是否在主表单中创建了新表单

var editor = new Edit(itemList, itemListBox);
editor.Show();

您编辑的数据类型是:

Dictionary<int, Item>

项目如下:

public class Item
{
    public string @Url { get; set; }
    public string Name { get; set; }
    public double Price { get; set; }

    public Item(string @url, string name, double price)
    {
        this.Url = url;
        this.Name = name;
        this.Price = price;
    }

    public override string ToString()
    {
        return this.Name;
    }
}

如何在编辑器关闭时添加处理程序,以便它可以更新主窗口窗体中的 ListBox。

4

2 回答 2

2

Form.Closed为事件添加事件处理程序

var editor = new Edit(itemList, itemListBox);
editor.Closed += OnEditorClosed(); // your eventhandler here
editor.Show();

ShowDialog或者简单地通过使用而不是创建模式对话框Show

var editor = new Edit(itemList, itemListBox);
editor.ShowDialog(); // execution will stop here until editor is closed
于 2013-09-09T07:01:46.970 回答
0

Form 具有事件处理程序 FormClosing 和 FormClosed。我认为使用第一个会更好,因为在第二个中,表单的数据可能已经被处理了。所以:

editor.FormClosing += new FormClosingEventHandler(editor_FormClosing);

private void editor_FormClosing(object sender, FormClosingEventArgs e)
{
    Edit editor = (Edit)sender;
    // update data on main form here
}
于 2013-09-09T07:06:02.273 回答