protected override void OnMouseDown(System.Windows.Forms.MouseEventArgs e) { //处理点击 if (m_objGroupInfosArr == null) { return; } int intOnIndex = this.GetCharIndexFromPosition(new Point(e.X, e.Y)); int intStartIndex = 0; int intLength = 0; int intUnselectedStartIndex = 0; int intUnselectedLength = 0; clsSelectInfoGroup objSelectedGroup = null; for (int i = 0; i < m_objGroupInfosArr.Length; i++) { if (intOnIndex >= m_objGroupInfosArr[i].m_intStartIndex && intOnIndex <= m_objGroupInfosArr[i].m_intEndIndex) { if (m_objGroupInfosArr[i].m_objGroup.m_blnHandleSelected(intOnIndex - m_objGroupInfosArr[i].m_intStartIndex, out intStartIndex, out intLength, out intUnselectedStartIndex, out intUnselectedLength)) { objSelectedGroup = m_objGroupInfosArr[i].m_objGroup; } break; } } if (objSelectedGroup != null) { //把所有相同的项目做相同的选择 for (int i = 0; i < m_objGroupInfosArr.Length; i++) { if (m_objGroupInfosArr[i].m_objGroup.m_blnIsSameInfo(objSelectedGroup)) { this.SelectionStart = m_objGroupInfosArr[i].m_intStartIndex + intUnselectedStartIndex; this.SelectionLength = intUnselectedLength; this.SelectionColor = m_clrUnselected; this.SelectionStart = m_objGroupInfosArr[i].m_intStartIndex + intStartIndex; this.SelectionLength = intLength; this.SelectionColor = m_clrSelected; this.SelectionLength = 0; } } this.SelectionStart = intOnIndex; } }
/// <summary> /// 判断是否同一个选择内容 /// </summary> /// <param name="p_objOther"></param> /// <returns></returns> public bool m_blnIsSameInfo(clsSelectInfoGroup p_objOther) { if (this.m_strSelectInfoArr.Length == p_objOther.m_strSelectInfoArr.Length) { for (int i = 0; i < this.m_strSelectInfoArr.Length; i++) { if (this.m_strSelectInfoArr[i] != p_objOther.m_strSelectInfoArr[i]) { return(false); } } //如果相同设置相同的选择项目 this.m_intSelected = p_objOther.m_intSelected; return(true);; } return(false); }