我有两种形式。 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属性。
答案 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;
}