Пожарные события во время проектирования? - PullRequest
4 голосов
/ 22 февраля 2012

В настоящее время я разрабатываю пользовательский класс управления вкладками, который является производным от System.Windows.Forms.Control. Проблема в том, что ни одно (по крайней мере, ни одно из тех, что я тестировал, включая события мыши и клавиатуры) не запускалось во время разработки. Это проблема для меня, так как невозможность переключения между вкладками в конструкторе довольно неудобна для пользователя. Я проводил некоторые исследования, и кажется, что то, что я пытаюсь достичь, невозможно. Это заставило меня задуматься, так как многие элементы управления, поставляемые с платформой .NET, поддерживают взаимодействие во время разработки. Возьмите 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();
    }

}

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

Ответы [ 2 ]

4 голосов
/ 22 февраля 2012

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

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

3 голосов
/ 22 февраля 2012

Должно работать следующее:

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

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

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

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

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

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

подробнее на http://msdn.microsoft.com/en-us/library/5ytx0z24(v=vs.90).aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...