Как я могу сделать прямоугольники кликабельными, С#

Код может генерировать прямоугольники (Прямоугольник прямоугольника) во время выполнения. Положение прямоугольников может меняться в зависимости от выбора пользователя.

Я хочу добавить код в метод, где он создает прямоугольники, чтобы сделать прямоугольники кликабельными. И после того, как пользователь щелкнет прямоугольник, появится новое окно, в котором содержимое будет отображаться так же, как текст.


person Axess    schedule 29.06.2012    source источник
comment
Один из способов - посмотреть на положение мыши по осям X,Y и для всех прямоугольников проверить, был ли на них щелчок.   -  person Perlnika    schedule 29.06.2012
comment
На чем вы рисуете прямоугольники? Винформ?   -  person tardomatic    schedule 29.06.2012
comment
Привет да! они есть на винформе.   -  person Axess    schedule 29.06.2012


Ответы (3)


Вы можете использовать метод Contains объекта Rectangle.

private Rectangle _myRectangle;
private void Form1_MouseDown(object sender, MouseEventArgs e)
{
    if (this._myRectangle.Contains(e.Location))
    {

    }
}
person Hyralex    schedule 29.06.2012
comment
@ user1490952 что еще вы хотите объяснить? Если здесь срабатывает случай if, значит, вы нажали на прямоугольник. - person Default; 29.06.2012
comment
но это не увидит, если они нажмут на границу, и граница тоже может быть толстой. см. мой ответ здесь stackoverflow.com/questions/4816297/ - person barlop; 20.12.2015

Создайте элемент управления меткой со свойством границы и прозрачным фоном (чтобы он выглядел как прямоугольник) и добавьте обработчик события щелчка для каждой добавляемой метки. Будет хорошо, если вы создадите свой собственный элемент управления Rectangle, производный от класса Label, или вы можете создать свой собственный элемент управления (многие другие решения).

person Sudhakar B    schedule 29.06.2012

Я бы рассмотрел возможность обработки события щелчка в самом окне (или любого другого элемента управления «фон»), получения его координат и сравнения их с известными местоположениями/размерами ваших прямоугольников.

person Jon Egerton    schedule 29.06.2012
comment
Извините, мы не занимаемся написанием кусков кода! - У меня есть своя работа! Попробуйте, и мы поможем, если у вас есть проблемы - person Jon Egerton; 29.06.2012