C# BindingSource AddNew()和初始化值

C# BindingSource AddNew()和初始化值,c#,winforms,data-binding,C#,Winforms,Data Binding,我将ComponentOne FlexGrid绑定到bindingsource,bindingsource绑定到bindinglist集合 用户单击“插入”按钮。我在BindingSource上调用AddNew()。在AddingNew()事件中,我想初始化bindingsource中的属性。通常,如果我想访问网格行下面的数据,我会这样做 MemberSkill skill = (MemberSkill)MemberSkillBS.Current skill.SocSecNo = curren

我将ComponentOne FlexGrid绑定到bindingsource,bindingsource绑定到bindinglist集合

用户单击“插入”按钮。我在BindingSource上调用AddNew()。在AddingNew()事件中,我想初始化bindingsource中的属性。通常,如果我想访问网格行下面的数据,我会这样做

MemberSkill skill = (MemberSkill)MemberSkillBS.Current

skill.SocSecNo = currentMember.SocSecNo;

但是,当我在
AddingNew()
事件中执行此操作时,Current仍然指向以网格为焦点的行。如何访问添加到绑定源的新项并对其进行初始化?

调用
AddNew
后,新项将成为当前项

Insert
按钮处理程序中,您可以执行以下操作:

    private void buttonInsert_Click(object sender, EventArgs e)
    {
        MemberSkill newItem = MemberSkillBS.AddNew() as MemberSkill;
        if (newItem != null)
        {
            MemberSkillBS.Add(newItem);
        }
        ...
    }
    private void MemberSkillBS_AddingNew(object sender, AddingNewEventArgs e)
    {
         MemberSkill skill = new MemberSkill
        {
           SocSecNo = MemberSkillBS.Current.SocSecNo
        };
        e.NewObject = skill;
    }
添加新的
处理程序中,您可以执行以下操作:

    private void buttonInsert_Click(object sender, EventArgs e)
    {
        MemberSkill newItem = MemberSkillBS.AddNew() as MemberSkill;
        if (newItem != null)
        {
            MemberSkillBS.Add(newItem);
        }
        ...
    }
    private void MemberSkillBS_AddingNew(object sender, AddingNewEventArgs e)
    {
         MemberSkill skill = new MemberSkill
        {
           SocSecNo = MemberSkillBS.Current.SocSecNo
        };
        e.NewObject = skill;
    }

在第一次发布未完成之前,新添加的行不会添加到当前BO,直到第一次发布可以撤消此行。发布数据之后,您将从BindingSource获取行。