溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

在Windows Form 中綁定非bool類型數(shù)據(jù)CheckBox控件的示例分析

發(fā)布時(shí)間:2021-12-29 16:12:45 來(lái)源:億速云 閱讀:124 作者:柒染 欄目:大數(shù)據(jù)

今天就跟大家聊聊有關(guān)在Windows Form 中綁定非bool類型數(shù)據(jù)CheckBox控件的示例分析,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

CheckBox的checked屬性不能直接綁定非bool型的數(shù)據(jù),因此作了下面這個(gè)擴(kuò)展。

使用的時(shí)候,需要先設(shè)置兩個(gè)屬性
 CheckedValue  ----選中時(shí)代表的值
 UnCheckedValue  ----未選中時(shí)代表的值

例如
 CheckedValue = “男”
 UnCheckedValue = “女”
 
然后綁定數(shù)據(jù)到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 的摘要說(shuō)明。
 /// </summary>
 public class EnjoyCheckBox : System.Windows.Forms.CheckBox
 {
  /// <summary> 
  /// 必需的設(shè)計(jì)器變量。
  /// </summary>
  private System.ComponentModel.Container components = null;

  public EnjoyCheckBox()
  {
   // 該調(diào)用是 Windows.Forms 窗體設(shè)計(jì)器所必需的。
   InitializeComponent();

   // TODO: 在 InitializeComponent 調(diào)用后添加任何初始化

  }

  /// <summary> 
  /// 清理所有正在使用的資源。
  /// </summary>
  protected override void Dispose( bool disposing )
  {
   if( disposing )
   {
    if(components != null)
    {
     components.Dispose();
    }
   }
   base.Dispose( disposing );
  }

  #region 組件設(shè)計(jì)器生成的代碼
  /// <summary> 
  /// 設(shè)計(jì)器支持所需的方法 - 不要使用代碼編輯器 
  /// 修改此方法的內(nèi)容。
  /// </summary>
  private void InitializeComponent()
  {
   components = new System.ComponentModel.Container();
  }
  #endregion

  private object m_BindText;
  private object m_CheckedValue;
  private object m_UnCheckedValue;
  /// <summary>
  /// 綁定數(shù)據(jù)庫(kù)的屬性
  /// </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>
  /// 選中時(shí)代表的(數(shù)據(jù)庫(kù)中的)值
  /// </summary>
  public object CheckedValue
  {
   get
   {
    return m_CheckedValue;
   }
   set
   {
    m_CheckedValue = value;
   }
  }

  /// <summary>
  /// 未選中時(shí)代表的(數(shù)據(jù)庫(kù)中的)值
  /// </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;
   }
  }


 }
}

看完上述內(nèi)容,你們對(duì)在Windows Form 中綁定非bool類型數(shù)據(jù)CheckBox控件的示例分析有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI