Пожарные события во время разработки?

В настоящее время я разрабатываю собственный класс управления вкладками, производный от System.Windows.Forms.Control. Проблема в том, что никакие (по крайней мере, ни одно из тех, которые я тестировал, включая события мыши и клавиатуры) не запускаются во время разработки. Для меня это проблема, поскольку невозможность переключения между страницами вкладок в дизайнере весьма неудобна для пользователя. Я проводил некоторые исследования, и мне кажется, что то, что я пытаюсь сделать, невозможно. Это заставило меня задуматься, поскольку многие элементы управления, поставляемые с .NET framework, поддерживают взаимодействие во время разработки. Возьмем для примера TabControl. Вы можете легко переключаться между его страницами во время проектирования.

Итак, мой вопрос: есть ли способ заставить события мыши и клавиатуры работать во время разработки?

Также извините, что я не предоставил фрагмент кода. Но я не думаю, что это действительно необходимо. Для тех из вас, кто хочет попробовать, вот простой класс кнопок, который я быстро создал:

public class MyButton : Control
{

    private bool hover = false;

    protected override void OnPaint(PaintEventArgs e)
    {
        base.OnPaint(e);

        Color color = hover ? Color.DarkBlue : Color.Blue;
        e.Graphics.FillRectangle(new SolidBrush(color), DisplayRectangle);
        e.Graphics.DrawRectangle(Pens.Black, new Rectangle(DisplayRectangle.Location, new Size(DisplayRectangle.Width - 1, DisplayRectangle.Height - 1)));
    }

    protected override void OnMouseEnter(EventArgs e)
    {
        base.OnMouseEnter(e);

        hover = true;
        Refresh();
    }

    protected override void OnMouseLeave(EventArgs e)
    {
        base.OnMouseLeave(e);

        hover = false;
        Refresh();
    }

}

Вы увидите, что цвет кнопки не меняется во время разработки.


person haiyyu    schedule 22.02.2012    source источник
comment
Я действительно не был уверен, какой ответ принять, но я выбрал Массимилиано Пелузо, поскольку сайт, на который он ссылается, содержит много информации о создании элементов управления.   -  person haiyyu    schedule 22.02.2012


Ответы (2)


Ниже должно работать:

  • Создание проекта Windows Forms для размещения вашего настраиваемого элемента управления

  • Создание проекта библиотеки элементов управления

  • Добавление свойства в настраиваемый элемент управления

  • Добавление настраиваемого элемента управления в форму хоста

  • Настройка проекта для отладки во время разработки

  • Отладка вашего пользовательского элемента управления во время разработки

дополнительная информация на http://msdn.microsoft.com/en-us/library/5ytx0z24(v=vs.90).aspx

person Massimiliano Peluso    schedule 22.02.2012
comment
О, вы отредактировали свой ответ. Спасибо, я посмотрю на это! - person haiyyu; 22.02.2012

Это требует небольшой работы - взаимодействие во время разработки отделено от времени выполнения. Это может помочь:

http://www.codeproject.com/Articles/13531/Targeting-Design-Time-Events-of-User-Controls

person J...    schedule 22.02.2012