winforms,将对象从一个窗口发送到另一个窗口并打印简单属性

时间:2013-12-02 20:58:00

标签: c# .net winforms

我有两种形式。 MainForm和BookDetailsForm。

从MainForm我将对象发送到BookDetailsForm,我想使用label属性在表单上打印简单的书名。

Book book = repository.GetBook(1);
var formDetails = new BookDetailsForm(book);
formDetails.ShowDialog();

在BookDetailsForm.cs上我有

private Book _book;

        public BookDetailsForm()
        {
            InitializeComponent();
        }

        public BookDetailsForm(Book book)
            : base()
        {           
            _book = book;

        }

        private void BookDetailsForm_Load(object sender, EventArgs e)
        {
            label1.Text = _book.Title;
        }

当调试book对象是succ时。发送到第二个构造函数,但BookDetailsForm_Load永远不会被命中,因此窗口显示为空而不填充label属性。

3 个答案:

答案 0 :(得分:2)

您正在调用基础构造函数,绕过对事件已连接的InitializeComponents()的调用。

使用this()而不是base()来调用无参数构造函数:

public BookDetailsForm(Book book)
            : this()
        {           
            _book = book;
        }

答案 1 :(得分:0)

如果没有遇到断点,

在你的加载事件中设置一个断点  尝试清理解决方案菜单build->清洁解决方案并重新编译它  有时pdb符号不会更新

答案 2 :(得分:0)

    public BookDetailsForm()
    {
        InitializeComponent();
    }

    public BookDetailsForm(Book book)
        : base()
    {           
        // add the init here
        _book = book;
        InitializeComponent();
        // map the book to the view
        // example:
        lblName.Text = _book.Title;
    }

    private void BookDetailsForm_Load(object sender, EventArgs e)
    {
        label1.Text = _book.Title;
    }