在Windows Form 中可以绑定非bool类型数据的CheckBox控件

    技术2022-05-11  99

    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;   }  }

     }}

    初次发表,有什么问题或者建议请回复。


    最新回复(0)