Как назначить обработчик события щелчка для части нарисованного прямоугольника? - PullRequest
3 голосов
/ 12 декабря 2008

Представьте, что я использую графические классы .NET для рисования прямоугольника.

Как я могу назначить событие так, чтобы, если пользователь щелкает определенную точку или определенный диапазон точек, что-то происходит (обработчик события щелчка)?

Я читал CLR через C # и раздел событий, и я подумал об этом сценарии из того, что я прочитал.

Пример кода этого действительно улучшил бы мое понимание событий в C # /. NET.

Спасибо

Ответы [ 2 ]

5 голосов
/ 12 декабря 2008

Вы можете назначить обработчик события Click, чтобы контролировать, чья поверхность будет использоваться для рисования прямоугольника. Вот небольшой пример: Если щелкнуть форму внутри прямоугольника, она будет нарисована красной рамкой, а при щелчке снаружи она будет нарисована черной рамкой.

public partial class Form1 : Form
{
    private Rectangle rect;
    private Pen pen = Pens.Black;

    public Form1()
    {
        InitializeComponent();
        rect = new Rectangle(10, 10, Width - 30, Height - 60);
        Click += Form1_Click;
    }

    protected override void OnPaint(PaintEventArgs e) 
    {
        base.OnPaint(e);
        e.Graphics.DrawRectangle(pen, rect);
    }

    void Form1_Click(object sender, EventArgs e)
    {
        Point cursorPos = this.PointToClient(Cursor.Position);
        if (rect.Contains(cursorPos)) 
        {
            pen = Pens.Red;
        }
        else
        {
            pen = Pens.Black;
        }
        Invalidate();
    }
}
0 голосов
/ 12 декабря 2008

PointToClient метод переводит координаты курсора в контрольные координаты. То есть если курсор находится в позиции (screenX, screenY) на экране, он может находиться в позиции (formX, formY) относительно верхнего левого угла формы. Нам нужно вызвать его, чтобы привести положение курсора в систему координат, используемую нашим прямоугольником.

Invalidate * Метод 1006 * создает контроль для перерисовки. В нашем случае он запускает обработчик события OnPaint для перерисовки прямоугольника с новым цветом границы.

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