public virtual ControlUI findControl(FINDCONTROLPROC proc, ref object data, UInt32 flags) { if ((flags & ControlFlag.UIFIND_VISIBLE) != 0 && isVisible() == false) { return(null); } if ((flags & ControlFlag.UIFIND_ENABLED) != 0 && isEnabled() == false) { return(null); } if ((flags & ControlFlag.UIFIND_HITTEST) != 0 && mMouseEnabled == false) { return(null); } if (data is Point) { Point rc = (Point)data; if ((flags & ControlFlag.UIFIND_HITTEST) != 0 && mRectItem.Contains(rc) == false) { return(null); } } ControlUI ctlUI = (ControlUI)this; return(proc(ref ctlUI, ref data)); }
public override ControlUI findControl(FINDCONTROLPROC Proc, ref object pData, uint uFlags) { ControlUI pResult = null; if (mExpanded && mSubControl != null) { pResult = mSubControl.findControl(Proc, ref pData, uFlags); } if (pResult == null) { pResult = base.findControl(Proc, ref pData, uFlags); } return(pResult); }
public override ControlUI findControl(FINDCONTROLPROC proc, ref object data, uint flags) { ControlUI pResult = null; if ((flags & ControlFlag.UIFIND_VISIBLE) != 0 && isVisible() == false) { return(null); } if ((flags & ControlFlag.UIFIND_ENABLED) != 0 && isVisible() == false) { return(null); } if ((flags & ControlFlag.UIFIND_HITTEST) != 0) { // 检测水平滚动条控件 Point pos = (Point)data; if (mRectItem.Contains(pos) == false) { return(null); } if (!mMouseChildEnabled) { if (mVerticalScrollbar != null) { pResult = mVerticalScrollbar.findControl(proc, ref data, flags); } if (pResult == null && mHorizontalScrollbar != null) { pResult = mHorizontalScrollbar.findControl(proc, ref data, flags); } if (pResult == null) { pResult = base.findControl(proc, ref data, flags); } return(pResult); } } // 检测垂直滚动条控件 if (mVerticalScrollbar != null) { pResult = mVerticalScrollbar.findControl(proc, ref data, flags); } if (pResult == null && mHorizontalScrollbar != null) { pResult = mHorizontalScrollbar.findControl(proc, ref data, flags); } if (pResult != null) { return(pResult); } if ((flags & ControlFlag.UIFIND_ME_FIRST) != 0) { pResult = base.findControl(proc, ref data, flags); if (pResult != null) { return(pResult); } } if ((flags & ControlFlag.UIFIND_TOP_FIRST) != 0) { for (int i = mItems.Count - 1; i >= 0; i--) { pResult = mItems[i].findControl(proc, ref data, flags); if (pResult != null) { return(pResult); } } } else { foreach (var item in mItems) { pResult = item.findControl(proc, ref data, flags); if (pResult != null) { return(pResult); } } } if (pResult == null) { pResult = base.findControl(proc, ref data, flags); } return(pResult); }