Добавить контур над элементом управления, когда мышь над ним (иногда) - PullRequest
0 голосов
/ 09 ноября 2011

Я пытаюсь добавить функциональность справки к некоторым своим элементам управления, и мне сложно выбрать нужный элемент управления справкой.

Это то, что я хотел бы сделать.

  1. Нажмите кнопку справки
  2. Поменять курсор на помощь
  3. При наведении курсора на элемент управления показывать синий контур элемента управления
  4. При нажатии всплывающее всплывающее окно справки.

В настоящее время у меня все реализовано, кроме # 3, я могу сделать событие MouseDown, таким образом, мое событие click не будет срабатывать при выборе (работает нормально, за исключением контура).У кого-нибудь есть идеи, как я могу обрисовать элемент управления и какое событие будет уместно при нажатии?

Ответы [ 2 ]

3 голосов
/ 09 ноября 2011

Расширяя ответ jberger, вы можете использовать событие MouseHover элемента управления, чтобы нарисовать прямоугольник вокруг элемента управления, подобный следующему:

private void Control_MouseHover ( object sender, EventArgs e ) {
    if ( inHelpMode ) {
        var c = (Control)sender;
        var rect = c.Bounds;
        rect.Inflate(1,1);
        var g = CreateGraphics ();
        ControlPaint.DrawBorder ( g, rect, Color.Blue, ButtonBorderStyle.Solid );
    }
}

Это предполагает, что у вас есть личная переменная экземпляра inHelpMode, которую вы устанавливаетекогда пользователь нажимает кнопку справки.

Скорее всего, вы также захотите удалить синий контур с элемента управления, когда пользователь перемещает фокус мыши с элемента управления.Для этого вы можете использовать событие MouseLeave:

private void Control_MouseLeave ( object sender, EventArgs e ) {
    Invalidate ();
}
1 голос
/ 09 ноября 2011

Частично Ответ.Вот где я бы начал.

Предполагая: isInHelpMode - это частная переменная экземпляра в приложении, для которой устанавливается значение true при нажатии кнопки справки ...

Где-то вприложение:

myControl.MouseHover += (sender,eventArgs) => 
{
    if(isInHelpMode)
    {// draw blue outline
       // insert your code to draw the blue outline
    }
}

Control.MouseHover

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