protected override void OnStateChanged(BulkEditorAdapter sender, BulkEditorStateEventArgs e)
 {
     base.OnStateChanged(sender, e);
     if (string.Equals(e.PropertyName, "Checked"))
     {
         AutoHeightCheckBox autoHeightCheckBox = base.HostControl as AutoHeightCheckBox;
         if (base["Checked"] != null && base["Checked"] != 3)
         {
             bool @checked = autoHeightCheckBox.Checked;
             this.forceAllowCheckedChangedEvent = true;
             autoHeightCheckBox.Checked         = autoHeightCheckBox.BulkEditDefaultChecked;
             this.forceAllowCheckedChangedEvent = false;
             autoHeightCheckBox.Checked         = @checked;
             Binding binding = autoHeightCheckBox.DataBindings["Checked"];
             if (binding != null)
             {
                 binding.WriteValue();
             }
         }
         else if (base["Checked"] != 3)
         {
             autoHeightCheckBox.Checked = false;
         }
     }
     base.HostControl.Invalidate();
 }
        public void BindCheckBoxToFlag(AutoHeightCheckBox checkBox, T flag)
        {
            if (checkBox == null)
            {
                throw new ArgumentNullException("checkBox");
            }
            ulong   flagValue = Convert.ToUInt64(flag);
            Binding binding   = checkBox.DataBindings.Add("Checked", this.dataSource, this.dataMember, true, DataSourceUpdateMode.OnPropertyChanged);

            binding.Format += delegate(object sender, ConvertEventArgs e)
            {
                this.currentEnumValue = ((e.Value == null) ? 0UL : Convert.ToUInt64(e.Value));
                e.Value = ((this.currentEnumValue & flagValue) == flagValue);
            };
            binding.Parse += delegate(object sender, ConvertEventArgs e)
            {
                if (true.Equals(e.Value))
                {
                    e.Value = Enum.ToObject(typeof(T), this.currentEnumValue | flagValue);
                    return;
                }
                e.Value = Enum.ToObject(typeof(T), this.currentEnumValue & ~flagValue);
            };
        }
 public CheckBoxBulkEditorAdapter(AutoHeightCheckBox checkBox) : base(checkBox)
 {
 }