none
C# События пользовательского Control RRS feed

  • Вопрос

  • Есть пользовательский Control (на подобие списка "CustomListView") который использует в качестве Item(Элементов списка) другой пользовательский Control ("CustomItem").

    Как создать событие клика по элементу? т.е. чтобы в списке событий для CustomListView появилось ItemMouseClick, а обработчик этого событие вызывался при клике по элементу  CustomItem

    1 июля 2014 г. 10:49

Ответы

  • Не знаю правильно ли это. но сделал следующим образом.
     public sealed class CustomListView: ContainerControl
        {
            public event MouseEventHandler ItemMouseDoubleClick;
            public event MouseEventHandler ItemMouseDown;
    
            private readonly List<CustomItem > _items = new List<CustomItem >(); // список элементов
    
     public CustomItem AddItem(string text)
            {
                var ctrl = new CustomItem {Text = text};
                ctrl.MouseDoubleClick += ItemMouseDoubleClick;
                ctrl.MouseDown += ItemMouseDown;
                _items.Add(ctrl);
                Controls.Add(ctrl);
                return ctrl;
            }
        }

    • Помечено в качестве ответа Dobrii 3 июля 2014 г. 6:56

Все ответы

  • Если Вы самостоятельно размещаете элементы в Вашем ListView, значит знаете их координаты. Ловите событие нажатия левой кнопки мыши в области ListView и вызывайте свое событие, если координаты курсора совпадают с областью элемента.

    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!

    2 июля 2014 г. 11:45
  • Не знаю правильно ли это. но сделал следующим образом.
     public sealed class CustomListView: ContainerControl
        {
            public event MouseEventHandler ItemMouseDoubleClick;
            public event MouseEventHandler ItemMouseDown;
    
            private readonly List<CustomItem > _items = new List<CustomItem >(); // список элементов
    
     public CustomItem AddItem(string text)
            {
                var ctrl = new CustomItem {Text = text};
                ctrl.MouseDoubleClick += ItemMouseDoubleClick;
                ctrl.MouseDown += ItemMouseDown;
                _items.Add(ctrl);
                Controls.Add(ctrl);
                return ctrl;
            }
        }

    • Помечено в качестве ответа Dobrii 3 июля 2014 г. 6:56