2012-02-09 68 views
1

我有一个winform用户控件。在构造函数中,我实例化了一个依赖项。它是这样了解winform控件的状态

public IProvider provider {get;set;} 

public MyUserControl() 
{ 
    InitializeComponent(); 
    provider = new MockProvider();//for testing. Will pass into constructor eventually 
} 

private void MyUserControl_Load(object sender, EventArgs e) 
{ 
    SomeModel model = new SomeModel(provider);//provider is null 
    //do work 
    model.InsertIntoDb(); 
} 

我认为会员国坚持,直到显式调用Form.Close()。那么为什么在Load事件中提供者对象为null?

+0

如何加载控件? – 2012-02-09 14:22:29

+0

@Shadow Wizard - 我在设计视图中将它放到窗体上。窗体的InitializeComponent()实例化用户控件。 – 2012-02-09 14:23:53

+0

我相信设计视图不会创建实例..不确定。运行时错误是否也会发生? – 2012-02-09 15:05:47

回答

0

InitializeComponent()在“父”形式(实例化用户控件的形式)中设置了Provider = null。非常好地证明了winforms don't support无参数构造函数。

0

这应该有效。确保new关键字在控件的构造函数中,并且某个地方正在实例化该控件。

确保在第二个函数之前调用新函数。也许这是另一回事。国家应该坚持下去。

+0

第二个函数是Load事件。构造函数确实会在任何对象事件之前调用。 – 2012-02-09 14:22:47