private void HideBox() { _box.Visible = false; lock (lockThis) { if (_labelEditItem != null) { if (_labelEditIndex == 0 && OnKeyChanged != null) { // Validierung, ob key eindeutig ist fehlt noch!! OnKeyChanged(_labelEditItem.SubItems[0].Text, _box.Text); _labelEditItem.SubItems[0].Text = _box.Text; } else if (_labelEditIndex > 0 && OnLabelChanged != null) { OnLabelChanged(_labelEditItem.Symbol, _labelEditIndex, _box.Text); _labelEditItem.SubItems[_labelEditIndex].Text = _box.Text; } _labelEditItem = null; } } _labelEditIndex = 0; }
private void list_MouseDown(object sender, MouseEventArgs e) { ListViewItem item = list.GetItemAt(4, e.Y); if (!(item is SymbolListViewItem)) { return; } if (e.X < imageList1.ImageSize.Width) { ISymbol symbol = ((SymbolListViewItem)item).Symbol; if (OnSymbolClicked != null) { OnSymbolClicked(symbol); Image image = imageList1.Images[item.ImageIndex]; using (System.Drawing.Graphics gr = System.Drawing.Graphics.FromImage(image)) { SymbolPreview.Draw(gr, new Rectangle(0, 0, image.Width, image.Height), symbol, true); imageList1.Images[item.ImageIndex] = image; } list.Refresh(); } else { ISymbol s = (symbol is INullSymbol) ? RendererFunctions.CreateStandardSymbol(((INullSymbol)symbol).GeomtryType) : (ISymbol)symbol.Clone(); FormSymbol dlg = new FormSymbol(s); if (dlg.ShowDialog() == DialogResult.OK) { Image image = imageList1.Images[item.ImageIndex]; using (System.Drawing.Graphics gr = System.Drawing.Graphics.FromImage(image)) { SymbolPreview.Draw(gr, new Rectangle(0, 0, image.Width, image.Height), dlg.Symbol, true); imageList1.Images[item.ImageIndex] = image; if (OnSymbolChanged != null) { OnSymbolChanged(item.Text, dlg.Symbol); } } ((SymbolListViewItem)item).Symbol = dlg.Symbol; } } if (_box.Visible) { HideBox(); } } else { int w = 0; bool showBox = false; foreach (ColumnHeader col in list.Columns) { w += col.Width; if (e.X < w) { if (col.Index == 0 && OnKeyChanged == null) { break; } if (col.Index > 0 && OnLabelChanged == null) { break; } Rectangle rect = item.Bounds; rect.X = 3 + w - col.Width + ((col.Index == 0) ? imageList1.ImageSize.Width : 0); rect.Y = 3 + rect.Top + rect.Height / 2 - _box.Height / 2; rect.Width = col.Width - ((col.Index == 0) ? imageList1.ImageSize.Width : 0); rect.Height = _box.Height; if (_box.Visible == true) { HideBox(); } _box.Bounds = rect; _box.Text = item.SubItems[col.Index].Text; _box.Visible = true; _box.Focus(); _labelEditItem = (SymbolListViewItem)item; _labelEditIndex = col.Index; showBox = true; break; } } if (showBox == false && _box.Visible == true) { HideBox(); _labelEditIndex = 0; } } }