private void lbSymbols_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) { SymbolCollectionItem item = null; for (int i = 0; i < lbSymbols.Items.Count; i++) { Rectangle rect = lbSymbols.GetItemRectangle(i); if (rect.Y <= e.Y && (rect.Y + rect.Height) >= e.Y) { item = (SymbolCollectionItem)lbSymbols.Items[i]; break; } } if (item == null) { return; } _mouseDownItem = item; if (e.X < 20) { item.Visible = !item.Visible; DrawPreview(); } }
private void lbSymbols_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e) { if (_mouseOverItem != null && _mouseDownItem != null && _mouseOverItem != _mouseDownItem) { _symbol.RemoveSymbol(_mouseDownItem.Symbol); _symbol.InsertBefore(_mouseDownItem.Symbol, _mouseOverItem.Symbol, _mouseDownItem.Visible); buildList(); _mouseOverItem = _mouseDownItem = null; } }
private void lbSymbols_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e) { _mX = e.X; _mY = e.Y; if (e.Button == MouseButtons.Left && lbSymbols.SelectedIndices.Count > 0 && _mouseDownItem != null) { SymbolCollectionItem item = null; Rectangle rect = new Rectangle(0, 0, 0, 0); for (int i = 0; i < lbSymbols.Items.Count; i++) { rect = lbSymbols.GetItemRectangle(i); //if(rect==null) continue; if (rect.Y <= e.Y && (rect.Y + rect.Height) >= e.Y) { item = (SymbolCollectionItem)lbSymbols.Items[i]; break; } } if (item == null) { return; } _mouseOverItem = item; System.Drawing.Graphics gr = System.Drawing.Graphics.FromHwnd(lbSymbols.Handle); Pen pen = new Pen(Color.Blue, 2); gr.DrawLine(pen, rect.Left, rect.Top, rect.Width, rect.Top); if (_rect != rect) { pen.Color = lbSymbols.BackColor; gr.DrawLine(pen, _rect.Left, _rect.Top, _rect.Width, _rect.Top); _rect = rect; } pen.Dispose(); pen = null; gr.Dispose(); gr = null; } }