加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C#数据绑定Windows窗体控件不保留值,除非您离开该字段

发布时间:2020-12-15 06:27:27 所属栏目:百科 来源:网络整理
导读:我在 Databound Windows Forms control does not recognize change until losing focus看到答案. 但这并不能完全回答我的问题.我有同样的情况.在ToolStrip_click上,我看过我的所有控件,并强制执行“WriteValue()”,但是在保存之前仍会恢复到之前的值.任何人
我在 Databound Windows Forms control does not recognize change until losing focus看到答案.

但这并不能完全回答我的问题.我有同样的情况.在ToolStrip_click上,我看过我的所有控件,并强制执行“WriteValue()”,但是在保存之前仍会恢复到之前的值.任何人都可以建议我如何解决这个问题?我是否执行不正确?

(请参阅当前(非工作)解决方案的代码.)

private void menuStrip1_ItemClicked(object sender,ToolStripItemClickedEventArgs e)
{
    // Make sure that all items have updated databindings.
    foreach (Control C in this.Controls)
    {
        foreach (Binding b in C.DataBindings)
        {
            // Help: this doesn't seem to be working.
            b.WriteValue();
        }
    }
}

该代码现在要简单得多,但这是一个相当的黑客.我会很高兴知道是否有更“正确”的解决方案.

private void menuStrip1_ItemClicked(object sender,ToolStripItemClickedEventArgs e)
{
    // Make sure that all text fields have updated by forcing everything
    // to lose focus except this lonely little label.
    label44.Focus();
}

解决方法

问题可能是您的数据绑定控件设置为更新验证.

您需要将每个数据绑定控件的DataSourceUpdateMode设置为DataSourceUpdateMode.OnPropertyChanged.例如,数据绑定文本框:

this.textBox1.DataBindings.Add(new System.Windows.Forms.Binding("Text",this.someBindingSource,"SomeProperty",true,System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));

您还可以通过以下方式在设计器中设置数据源更新模式:

选择控件并转到属性窗口 – > (DataBindings) – > (高级)

– >将下拉列表中的[数据源更新模式]设置为OnPropertyChanged.

干杯

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读