protected override void DrawItem(PaintEventArgs e) { //Rectangle rectangle = this.DisplayRectangle; IViewItemOwner pViewItemOwner = this.pOwner as IViewItemOwner; Rectangle viewItemsRectangle = e.ClipRectangle;// pViewItemOwner == null ? rectangle : pViewItemOwner.ViewItemsRectangle; GISShare.Controls.WinForm.WFNew.LayoutEngine.LayoutStackH_Row(e.Graphics, this, viewItemsRectangle, this.DisplayRectangle, ref this._TopViewItemIndex, ref this._BottomViewItemIndex); ViewItem viewItem = null; IMessageChain pMessageChain; for (int i = this.TopViewItemIndex; i <= this.BottomViewItemIndex; i++) { viewItem = this.ViewItems[i]; if (viewItem == null) { continue; } Rectangle clipRectangle = Rectangle.Intersect(viewItemsRectangle, viewItem.DisplayRectangle); if (clipRectangle.Width > 0 && clipRectangle.Height > 0) { pMessageChain = viewItem as IMessageChain; if (pMessageChain != null) { //e.Graphics.SetClip(clipRectangle); e.Graphics.SetClip(System.Drawing.Rectangle.FromLTRB(clipRectangle.Left - 1, clipRectangle.Top - 1, clipRectangle.Right, clipRectangle.Bottom)); MessageInfo messageInfo = new MessageInfo(this, MessageStyle.eMSPaint, new PaintEventArgs(e.Graphics, clipRectangle)); pMessageChain.SendMessage(messageInfo); } } } //base.DrawItem(e); }
private void MSMouseMove(MessageInfo messageInfo)// { //if (this.m_MouseDown) return; // IViewItemOwner pViewItemOwner = messageInfo.Now as IViewItemOwner; if (pViewItemOwner != null) { MouseEventArgs mouseEventArgs = messageInfo.MessageParameter as MouseEventArgs; if (mouseEventArgs != null) { Rectangle rectangle = Rectangle.Intersect(pViewItemOwner.ViewItemsRectangle, this.DisplayRectangle); if (this.m_MouseDown && !rectangle.Contains(mouseEventArgs.Location)) { return; //key } // bool bMouseMove = Form.MouseButtons == MouseButtons.None ? rectangle.Contains(mouseEventArgs.Location) : this.m_MouseDown; //if (this.DisplayRectangle.Contains(mouseEventArgs.Location)) if (bMouseMove) { if (!this.m_MouseEnter) { this.m_MouseEnter = true; //Console.WriteLine(this.Text + "|true|" + this.eBaseItemState); if (this.RefreshBaseItemState) { pViewItemOwner.Refresh(); } //植入监听 this.MessageMonitor(new MessageInfo(this, MessageStyle.eMSMouseEnter, messageInfo.MessageParameter)); } //植入监听 this.MessageMonitor(messageInfo);//new MessageInfo(this, messageInfo.eMessageStyle, messageInfo.MessageParameter) } else { if (this.m_MouseEnter) { this.m_MouseEnter = false; //Console.WriteLine(this.Text + "|2 false|" + this.eBaseItemState); if (this.RefreshBaseItemState) { pViewItemOwner.Refresh(); } //植入监听 this.MessageMonitor(new MessageInfo(this, MessageStyle.eMSMouseLeave, messageInfo.MessageParameter)); } } } } }
private void MSMouseDoubleClick(MessageInfo messageInfo) { IViewItemOwner pViewItemOwner = messageInfo.Now as IViewItemOwner; if (pViewItemOwner != null) { MouseEventArgs mouseEventArgs = messageInfo.MessageParameter as MouseEventArgs; if (mouseEventArgs != null && this.DisplayRectangle.Contains(mouseEventArgs.Location)) { //植入监听 this.MessageMonitor(messageInfo);//new MessageInfo(this, messageInfo.eMessageStyle, messageInfo.MessageParameter) } } }
private void MSMouseEnter(MessageInfo messageInfo) { if (!this.m_MouseEnter) { this.m_MouseEnter = true; //Console.WriteLine(this.Text + "|2 true|" + this.eBaseItemState); IViewItemOwner pViewItemOwner = messageInfo.Now as IViewItemOwner; if (pViewItemOwner != null) { if (this.RefreshBaseItemState) { pViewItemOwner.Refresh(); } } } }
private void MSMouseLeave(MessageInfo messageInfo) { if (this.m_MouseEnter) { this.m_MouseEnter = false; //Console.WriteLine(this.Text + "|1 false|" + this.eBaseItemState); IViewItemOwner pViewItemOwner = messageInfo.Now as IViewItemOwner; if (pViewItemOwner != null) { if (this.RefreshBaseItemState) { pViewItemOwner.Refresh(); } } //植入监听 this.MessageMonitor(messageInfo);//new MessageInfo(this, messageInfo.eMessageStyle, messageInfo.MessageParameter) } }
private void MSMouseUp(MessageInfo messageInfo) { this.m_MouseDown = false; IViewItemOwner pViewItemOwner = messageInfo.Now as IViewItemOwner; if (pViewItemOwner != null) { MouseEventArgs mouseEventArgs = messageInfo.MessageParameter as MouseEventArgs; if (mouseEventArgs == null || this.DisplayRectangle.Contains(mouseEventArgs.Location)) { this.m_MouseEnter = false; } if (this.RefreshBaseItemState) { pViewItemOwner.Refresh(); } } //植入监听 this.MessageMonitor(messageInfo);//new MessageInfo(this, messageInfo.eMessageStyle, messageInfo.MessageParameter) }
protected virtual void DrawItem(System.Windows.Forms.PaintEventArgs e) { //Rectangle rectangle = this.DisplayRectangle; IViewItemOwner pViewItemOwner = this.pOwner as IViewItemOwner; Rectangle viewItemsRectangle = e.ClipRectangle;// pViewItemOwner == null ? rectangle : pViewItemOwner.ViewItemsRectangle; GISShare.Controls.WinForm.WFNew.LayoutEngine.LayoutStackH_Row(e.Graphics, this, viewItemsRectangle, this.DisplayRectangle, ref this._TopViewItemIndex, ref this._BottomViewItemIndex); ViewItem viewItem = null; IMessageChain pMessageChain; for (int i = this.TopViewItemIndex; i <= this.BottomViewItemIndex; i++) { viewItem = this.ViewItems[i]; if (viewItem == null) { continue; } Rectangle clipRectangle = Rectangle.Intersect(viewItemsRectangle, viewItem.DisplayRectangle); if (clipRectangle.Width > 0 && clipRectangle.Height > 0) { pMessageChain = viewItem as IMessageChain; if (pMessageChain != null) { e.Graphics.SetClip(clipRectangle); MessageInfo messageInfo = new MessageInfo(this, MessageStyle.eMSPaint, new PaintEventArgs(e.Graphics, clipRectangle)); pMessageChain.SendMessage(messageInfo); } } } #region 已抛弃(布局移植到LayoutEngine) //Rectangle rectangle = this.DisplayRectangle; //int iW = 0; //int iOffsetX = 0; //// //IViewItemOwner pViewItemOwner = this.pOwner as IViewItemOwner; //Rectangle viewItemsRectangle = pViewItemOwner == null ? rectangle : pViewItemOwner.ViewItemsRectangle; //// //ViewItem viewItem = null; //int iCount = this.ViewItems.Count; //int iLeftX = 0; //int iRightX = 0; //int iLeftIndex = 0; //int iRightIndex = iCount; //for (int i = 0; i < iCount; i++) //{ // viewItem = this.ViewItems[i]; // // // iW = viewItem.MeasureSize(e.Graphics).Width; // iLeftX = rectangle.Left + iOffsetX; // iRightX = iLeftX + iW; // if (iRightX <= viewItemsRectangle.Left) // { // iLeftIndex++; // } // else if (iLeftX >= viewItemsRectangle.Right) // { // iRightIndex--; // } // else // { // ISetViewItemHelper pSetViewItemHelper = viewItem as ISetViewItemHelper; // if (pSetViewItemHelper != null) // { // pSetViewItemHelper.SetViewItemDisplayRectangle(new Rectangle(iLeftX, rectangle.Top, iW, rectangle.Height)); // // // Rectangle clipRectangle = Rectangle.Intersect(viewItemsRectangle, viewItem.DisplayRectangle); // if (clipRectangle.Width > 0 && clipRectangle.Height > 0) // { // IMessageChain pMessageChain = viewItem as IMessageChain; // if (pMessageChain != null) // { // e.Graphics.SetClip(clipRectangle); // MessageInfo messageInfo = new MessageInfo(this, MessageStyle.eMSPaint, new PaintEventArgs(e.Graphics, clipRectangle)); // pMessageChain.SendMessage(messageInfo); // } // } // } // } // // // iOffsetX += iW; //} //// //this.m_TopViewItemIndex = iLeftIndex; //this.m_BottomViewItemIndex = iRightIndex - 1; #endregion }