我使用.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#,.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)