小编tra*_*ler的帖子

winforms中的双向数据绑定,在基类中实现的Inotifypropertychanged

我使用.Net 3.5,Winforms,Databinding

我有派生类,基类实现了IPropertychanged

    public event PropertyChangedEventHandler PropertyChanged;

    private void RaisePropertyChanged(string propertyName) {
        var handler = this.PropertyChanged;
        if (handler != null) {
            handler(this, new PropertyChangedEventArgs(propertyName));
        }
    }
Run Code Online (Sandbox Code Playgroud)

每个propertysetter调用:

    protected void SetField<T>(ref T field, T value, string propertyName) {
        if (!EqualityComparer<T>.Default.Equals(field, value)) {
            field = value;
            IsDirty = true;
            this.RaisePropertyChanged(propertyName);
        }
    }
Run Code Online (Sandbox Code Playgroud)

典型的Propertysetter:

    public String LocalizationItemId {
        get {
            return _localizationItemId;
        }
        set {
             SetField(ref _localizationItemId, value, "LocalizationItemId");
        }
    }
Run Code Online (Sandbox Code Playgroud)

属性绑定到文本框的方式

        private DerivedEntity derivedEntity
        TextBoxDerivedEntity.DataBindings.Add("Text", derivedEntity, "Probenname");
Run Code Online (Sandbox Code Playgroud)

如果我以编程方式将文本分配给文本框,则文本框不会显示它.但我可以手动编辑文本框.

c# data-binding winforms

7
推荐指数
2
解决办法
1万
查看次数

在Paint事件处理程序中处理图形元素

我正在使用C#,.net 3.5和Visual Studio 2008.

在阅读了一些关于何时必须处理元素的内容后,我有点困惑.以下Paint事件处理程序是否可以,或者它是内存泄漏?

private void ProgressBar_Paint(object sender, PaintEventArgs e) {
        Graphics graphics = e.Graphics;
        string rightText = "rightext";
        string leftText = "lefttext";;
        string textToDraw = rightText + leftText;
        graphics.DrawString(textToDraw, progressBar.Font, 
             new SolidBrush(progressBar.ForeColor), 10, 30);                         
    }
Run Code Online (Sandbox Code Playgroud)

这会好吗?

private void ProgressBar_Paint(object sender, PaintEventArgs e) {
        Graphics graphics = e.Graphics;
        string rightText = "rightext";
        string leftText = "lefttext";;
        string textToDraw = rightText + leftText;
        using (SolidBrush solidBrush = new SolidBrush(progressBar.ForeColor)) {
            graphics.DrawString(textToDraw, progressBar.Font, solidBrush, 18, 20);
        }
    }
Run Code Online (Sandbox Code Playgroud)

c# gdi+ dispose winforms

1
推荐指数
1
解决办法
175
查看次数

标签 统计

c# ×2

winforms ×2

data-binding ×1

dispose ×1

gdi+ ×1