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

前端之家收集整理的这篇文章主要介绍了C#数据绑定Windows窗体控件不保留值,除非您离开该字段前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在 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.

干杯

猜你在找的C#相关文章