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

原创 2003年10月20日 10:28:00


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


 }
}

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

潘鹏整理WPF(14)绑定到非元素对象

简述数据驱动的WPF还是将显示的数据提取绑定在控件上,控件不需要NameSource:是对数据对象的引用,就是提供数据对象,就是源数据赋值的地方RelativeSource:可以绑定父级元素的属性,即...
  • PanPen120
  • PanPen120
  • 2015年09月29日 00:34
  • 1047

MySQL数据库之数据类型BOOL/BOOLEAN与TINYINT测试总结

(一) 数据类型测试 (1). 布尔类型BOOL/BOOLEAN 与 微整型TINYINT a). 创建测试表结构 root@localhost : test 05:12:49> CRE...
  • liuzhihui666
  • liuzhihui666
  • 2017年04月20日 01:50
  • 1011

WinForms ToolStrip 控件点滴(转)

46WinForms ToolStrip 控件点滴WinForms2010年4月5日01. 关于 ToolStrip 控件ToolStrip 控件异常强大,从 .NET 2.0 开始引入,可直接作...
  • zhaodyun
  • zhaodyun
  • 2010年08月26日 15:31
  • 4098

Spring MVC框架checkbox标签的使用

代码: checkboxForm.jsp 测试checkbox标签 form:checkbox测试 选择课程: ...
  • Haige_lin
  • Haige_lin
  • 2017年03月23日 10:52
  • 574

vue-cli checkbox绑定数据使用

  • guohao326
  • guohao326
  • 2017年09月18日 15:33
  • 380

GridControl中添加checkbox复选框

添加一列,FieldName为 "check",将ColumnEdit 设置为 复选框 样式。gridview1 editable设置为true   将要绑定的DataTable添加列 "check"...
  • kone0611
  • kone0611
  • 2015年05月12日 18:05
  • 762

c# datagridview 中的checkbox使用

在dataGridView1中添加checkbox  DataGridViewCheckBoxColumn checkBoxColumn = new DataGridViewCheckBoxColu...
  • i2312375734
  • i2312375734
  • 2015年05月11日 16:00
  • 268

WPF:绑定到非元素对象

到目前为止都在讨论如何链接两个元素的绑定。但在数据驱动的应用程序中,更常见的情况是创建从不可见的对象中提取数据绑定表达式。唯一的要求是希望显示的信息必须存储在公有的属性中。WPF数据绑定基础结构不能获...
  • wudong121
  • wudong121
  • 2016年07月30日 16:12
  • 628

Easyui 扩展Form类型组件之 checkbox & radio

由于在论坛和群里面好多同学都问到了为啥easyui的form组件中没有配套的checkbox以及radio这些选择组件。其实在我个人认为,这两个组件其实需要二次封装的必要性不是很大,非得要找个理由进行...
  • liuxiao723846
  • liuxiao723846
  • 2015年01月20日 11:11
  • 4734

MVC中CheckBox

一、单个Checkbox   1、View文件 model.IsNeverExpired)%>   2、生成的HTML为   3、备注   (1)、上面生成的HTML有点奇...
  • chen_yanfeng
  • chen_yanfeng
  • 2015年04月09日 13:42
  • 1330
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在Windows Form 中可以绑定非bool类型数据的CheckBox控件
举报原因:
原因补充:

(最多只允许输入30个字)