【问题标题】:c# WindowsForms databinding does not update all fieldsc# Windows Forms数据绑定不更新所有字段
【发布时间】:2017-07-24 11:16:09
【问题描述】:

有一个 Windows 窗体应用程序,其中包含应由 databindng 更新的多个字段。 所有字段都将包含在“this”部分中,并且所有字段都将显示在附加的标签中,但不包括 [BaustelleName]。

PropertyChanged?.Invoke(this, e); ScreenShoot one

使用的来源是:

    public string BaustelleName
    {
        get { return string.IsNullOrEmpty(this.sName) ? null : sName; }
        set
        {
            sName = value;
            InvokePropertyChanged(new PropertyChangedEventArgs("BaustelleName"));
        }
    }

    public string BaustelleZusatz
    {
        get { return string.IsNullOrEmpty(this.sZusatz) ? null : sZusatz; }
        set
        {
            sZusatz = value;
            InvokePropertyChanged(new PropertyChangedEventArgs("BaustelleZusatz"));
        }
    }

...

    protected void BindControls()
    {
        try
        {
            Binding bnd = null;
            cBindung bnd_Helper = new cBindung();

            // txt_Baustelle ----------------------------------------------------------------------------
            parent.txt_Baustelle.DataBindings.Clear();
            bnd = new Binding("Text", this, "BaustelleNr", true, DataSourceUpdateMode.OnPropertyChanged);
            parent.txt_Baustelle.DataBindings.Add(bnd);

            //lbl_AdrBaustelle_Zl1.Text = adr.VornameName; ----------------------------------------------
            parent.lbl_AdrBaustelle_Zl1.DataBindings.Clear();
            bnd = new Binding("Text", this, "BaustelleName");
            parent.lbl_AdrKunde_Zl1.DataBindings.Add(bnd);

            //lbl_AdrBaustelle_Zl2.Text = adr.Zusatz; ---------------------------------------------------
            parent.lbl_AdrBaustelle_Zl2.DataBindings.Clear();
            bnd = new Binding("Text", this, "BaustelleZusatz");
            parent.lbl_AdrBaustelle_Zl2.DataBindings.Add(bnd);     //Zusatz

...

    public void InvokePropertyChanged(PropertyChangedEventArgs e)
    {
        PropertyChanged?.Invoke(this, e);
    }

... 其他字段相同。 我发现 [BaustelleName] 的 getter 永远不会被调用,而其他所有的 getter 每次调用 [InvokePropertyChanged] 时都会被调用。

可能出了什么问题?

【问题讨论】:

    标签: c# winforms data-binding


    【解决方案1】:

    您将绑定添加到错误的标签:您将其添加到 lbl_ArdKunde 而不是 lbl_AdrBaustelle

    //lbl_AdrBaustelle_Zl1.Text = adr.VornameName; ---------------------------------------
        parent.lbl_AdrBaustelle_Zl1.DataBindings.Clear();
        bnd = new Binding("Text", this, "BaustelleName");
        parent.lbl_AdrKunde_Zl1.DataBindings.Add(bnd);
    

    【讨论】:

    • @nicoYour'e 对;非常感谢您,并为这个愚蠢的问题道歉。正如我们用德语所说:“有时您看不到眼前的手
    猜你喜欢
    • 2019-12-16
    • 1970-01-01
    • 1970-01-01
    • 2011-07-20
    • 2018-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多