龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > asp.net编程 >

ASP.NET编写组件控件实例:多列下拉框和鼠标相关组件(4)

时间:2009-12-21 11:47来源:未知 作者:admin 点击:
分享到:
该接口的实现如下: Code /// summary /// 不响应操作的控件的列表 /// /summary private ListControl m_NoHandleControls = new ListControl(); /// summary /// IExtenderProvider成员方法

该接口的实现如下:

Code
        /// <summary>
        /// 不响应操作的控件的列表
        /// </summary>
        private List<Control> m_NoHandleControls = new List<Control>();

        /// <summary>
        /// IExtenderProvider成员方法-是否可扩展
        /// </summary>
        public bool CanExtend(object extendee)
        {
            if (m_HandleControl != null && IsContainSubControl(m_HandleControl, extendee as Control))
                return true;
            else
                return false;
        }

        /// <summary>
        /// 是否包含下级控件
        /// </summary>
        /// <param name="Parent">上级控件</param>
        /// <param name="Child">下级控件</param>
        /// <returns></returns>
        private bool IsContainSubControl(Control Parent, Control Child)
        {
            bool blnResult = false;
            if (Parent == null || Child == null)
                blnResult = false;
            else
            {
                if (Parent.Controls.Contains(Child))
                    blnResult = true;
                else
                {
                    foreach (Control item in Parent.Controls)
                    {
                        if (IsContainSubControl(item, Child))
                        {
                            blnResult = true;
                            break;
                        }
                    }
                }
            }

            return blnResult;
        }

        /// <summary>
        /// IExtenderProvider成员方法-设置响应移动属性
        /// </summary>
        public void SetHandleMove(Control control, bool value)
        {
            if (value)
            {
                if (m_NoHandleControls.Contains(control))
                    m_NoHandleControls.Remove(control);
            }
            else
            {
                if (!m_NoHandleControls.Contains(control))
                    m_NoHandleControls.Add(control);
            }
        }

        /// <summary>
        /// 成员方法-获取响应移动属性
        /// </summary>
        [DefaultValue(true)]
        [Description("指示控件是否响应改变位置操作。")]
        public bool GetHandleMove(Control control)
        {
            if (m_HandleControl != null && (control == this.m_HandleControl || IsContainSubControl(m_HandleControl, control)))
            {
                if (this.m_NoHandleControls.Contains(control))
                    return false;
                else
                    return true;
            }
            else
                return false;
        }


精彩图集

赞助商链接