窗体的对象实现- c#

本文关键字:实现 对象 窗体 | 更新日期: 2023-09-27 18:12:20

我正在使用windows Forms c#与Ninject版本:2.0.0.1

第一次安装Ninject Package: ninject.extensions.infrastructure.winforms

其次,我用下面的代码创建了新类。
public class CustomModule : NinjectModule
{
    public override void Load()
    {
        Bind<IDAL.IORDR>().To<DAL.DAL_ORDR>();
    }
}

我在下面做的第三个窗口表单

public partial class SODetails : Form
{
    public IORDR _IORDR { get; set; }
    [Inject]
    public SODetails(IORDR ORDR)
    {
        _IORDR = ORDR;
    }
    public SODetails()
    {
        InitializeComponent();
    }
}
最后,在Program.cs中,我编写了下面的代码
static void Main()
{
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    var kernel = new StandardKernel(new CustomModule());
    var form = kernel.Get<SODetails>();
    Application.Run(form);
}

虽然我能够成功地注入依赖关系,但表单没有显示任何控制。

窗体的对象实现- c#

我从

更改了以下代码
public partial class SODetails : Form
{
    public IORDR _IORDR { get; set; }
    [Inject]
    public SODetails(IORDR ORDR)
    {
        _IORDR = ORDR;
    }
    public SODetails()
    {
        InitializeComponent();
    }
}

public partial class SODetails : Form
{
    public IORDR _IORDR { get; set; }
    [Inject]
    public SODetails(IORDR ORDR)
    {
        _IORDR = ORDR;
        InitializeComponent();
    }
    public SODetails()
    {

<年代> InitializeComponent ();

    }
}

我看到问题了。

所以你的SODetails表单已经启动并运行了,但是它没有显示任何你在设计器中添加的控件。我说的对吗?

问题是InitializeComponent()没有被调用。

请更改代码,以便调用默认构造函数&一切都会好起来的。我做了一个小的改变你的代码构造函数链公共SODetails(IORDR ORDR): this(){…}

public IORDR _IORDR { get; set; }
    [Inject]
    public SODetails(IORDR ORDR) : this()
    {
        _IORDR = ORDR;
    }
    public SODetails()
    {
        InitializeComponent();
    }

    public IORDR _IORDR { get; set; }
    [Inject]
    public SODetails(IORDR ORDR) : this()
    {
        _IORDR = ORDR;
    }
    public SODetails()
    {
        InitializeComponent();
    }