CheckBox的checked属性不能直接绑定非bool型的数据,因此作了下面这个扩展。
使用的时候,需要先设置两个属性 CheckedValue ----选中时代表的值 UnCheckedValue ----未选中时代表的值
例如 CheckedValue = “男” UnCheckedValue = “女” 然后绑定数据到bindText属性
例如:enjoyCheckBox1.DataBindings.Add("BindText",ds,"cname");
源码:using System;using System.Collections;using System.ComponentModel;using System.Drawing;using System.Data;using System.Windows.Forms;
namespace Enjoy.Interface.Control{ /// <summary> /// EnjoyCheckBox 的摘要说明。 /// </summary> public class EnjoyCheckBox : System.Windows.Forms.CheckBox { /// <summary> /// 必需的设计器变量。 /// </summary> private System.ComponentModel.Container components = null;
public EnjoyCheckBox() { // 该调用是 Windows.Forms 窗体设计器所必需的。 InitializeComponent();
// TODO: 在 InitializeComponent 调用后添加任何初始化
}
/// <summary> /// 清理所有正在使用的资源。 /// </summary> protected override void Dispose( bool disposing ) { if( disposing ) { if(components != null) { components.Dispose(); } } base.Dispose( disposing ); }
#region 组件设计器生成的代码 /// <summary> /// 设计器支持所需的方法 - 不要使用代码编辑器 /// 修改此方法的内容。 /// </summary> private void InitializeComponent() { components = new System.ComponentModel.Container(); } #endregion
private object m_BindText; private object m_CheckedValue; private object m_UnCheckedValue; /// <summary> /// 绑定数据库的属性 /// </summary> public object BindText { get { return m_BindText; } set { m_BindText = value; if ((m_BindText!=null)&&(CheckedValue!=null)&&(UnCheckedValue!=null)) { if (m_BindText.Equals(CheckedValue)) { if (!this.Checked) { this.Checked = true; } } if (m_BindText.Equals(UnCheckedValue)) { if (this.Checked) { this.Checked = false; } } } } }
/// <summary> /// 选中时代表的(数据库中的)值 /// </summary> public object CheckedValue { get { return m_CheckedValue; } set { m_CheckedValue = value; } }
/// <summary> /// 未选中时代表的(数据库中的)值 /// </summary> public object UnCheckedValue { get { return m_UnCheckedValue; } set { m_UnCheckedValue = value; } } protected override void OnCheckedChanged(EventArgs e) { base.OnCheckedChanged(e); if (this.Checked) { BindText = CheckedValue; } if (!this.Checked) { BindText = UnCheckedValue; } }
}}
初次发表,有什么问题或者建议请回复。