Example #1
0
        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;
        }
Example #2
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;
                }
            }
        }