C# 如何定义自定义属性相对应的事件? 假设自定义控件(UserControl)有一自定义属性 PatientName,那么在用户修改 PatientName 的内容时将触发 B 事件,B事件在控件中将如何定义?谢谢!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 public delegate void PatientNameEvent(); public event PatientNameEvent PatientNameChanged; private object m_PatientName; public object PatientName { get { return m_PatientName; } set { if (PatientNameChanged != null) PatientNameChanged(); m_PatientName = value; } } public object PatientName { get { return m_PatientName; } set { if(m_PatientName!=value) OnPatientNameChanged(); m_PatientName = value; } }protect viture void OnPatientNameChanged(){if (PatientNameChanged != null) PatientNameChanged();} 一楼的做法完全正确我这里抛砖引玉给一段完善的示例,这是我们编程的经典代码: public class MyClass { public event EventHandler<PropertyChagedEventArgs> MyPropertyChanging; public event EventHandler<PropertyChagedEventArgs> MyPropertyChanged; private int _myProperty; public int MyProperty { get { return _myProperty; } set { if (value != _myProperty) { PropertyChagedEventArgs e = new PropertyChagedEventArgs("MyProperty", _myProperty, value); if (this.MyPropertyChanging != null) { this.MyPropertyChanging(this, e); if (e.Cancel) return; } _myProperty = (int)e.NewValue; if (this.MyPropertyChanged != null) { this.MyPropertyChanged(this, e); } } } } } /// <summary> /// 通用的类 /// </summary> public class PropertyChagedEventArgs : EventArgs { public PropertyChagedEventArgs(string propertyName,object oldValue,object newValue) { PropertyName = propertyName; OldValue = oldValue; NewValue = newValue; } public bool Cancel { get; set; } public string PropertyName { get; private set; } public object OldValue { get; private set; } public object NewValue { get; set; } } kldxdybb,Error_Code写的真不错,困惑N久的问题,看后明白,多谢多谢! C#.NET CF在wince描绘界面出现的问题 C# 到底可不可以调用 c++ callback,需要注意什么? 错误:当前上下文中不存在名称“Console” C# 删除一个记录的同时,删除与之相关的所有记录 dllimport 构造函数 如何将byte[]转换Stream 想让我的窗口不响应键盘事件,怎么办 多线程如何传递参数? 简单问题(关于结构),知道的给个回答 谁有Dotfuscator???? rdlc报表如何自定义打印机尺寸 怎么做月统计的饼图、柱图?
public event PatientNameEvent PatientNameChanged; private object m_PatientName; public object PatientName
{
get { return m_PatientName; }
set
{
if (PatientNameChanged != null) PatientNameChanged();
m_PatientName = value;
}
}
{
get { return m_PatientName; }
set
{
if(m_PatientName!=value)
OnPatientNameChanged();
m_PatientName = value;
}
}protect viture void OnPatientNameChanged()
{
if (PatientNameChanged != null)
PatientNameChanged();
}
我这里抛砖引玉给一段完善的示例,这是我们编程的经典代码: public class MyClass
{
public event EventHandler<PropertyChagedEventArgs> MyPropertyChanging;
public event EventHandler<PropertyChagedEventArgs> MyPropertyChanged; private int _myProperty;
public int MyProperty
{
get { return _myProperty; }
set
{
if (value != _myProperty)
{
PropertyChagedEventArgs e = new PropertyChagedEventArgs("MyProperty", _myProperty, value);
if (this.MyPropertyChanging != null)
{
this.MyPropertyChanging(this, e);
if (e.Cancel) return;
}
_myProperty = (int)e.NewValue;
if (this.MyPropertyChanged != null)
{
this.MyPropertyChanged(this, e);
}
}
}
}
} /// <summary>
/// 通用的类
/// </summary>
public class PropertyChagedEventArgs : EventArgs
{
public PropertyChagedEventArgs(string propertyName,object oldValue,object newValue)
{
PropertyName = propertyName;
OldValue = oldValue;
NewValue = newValue;
} public bool Cancel { get; set; }
public string PropertyName { get; private set; }
public object OldValue { get; private set; }
public object NewValue { get; set; }
}