Как я делаю поле изображения можно выбрать?

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

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

Каково лучшее решение для удаления объекта в моем редакторе?

10
задан Jeff Walden 30 April 2010 в 08:22
поделиться

2 ответа

Вы хотите, чтобы PictureBox участвовал в порядке перехода и показывал, что он находится в фокусе. Это требует небольшой хирургической операции. Добавьте новый класс в свой проект и вставьте код, показанный ниже. Скомпилировать. Перетащите новый элемент управления из верхней части панели инструментов в форму. Реализуйте событие KeyDown.

using System;
using System.Drawing;
using System.Windows.Forms;

class SelectablePictureBox : PictureBox {
  public SelectablePictureBox() {
    this.SetStyle(ControlStyles.Selectable, true);
    this.TabStop = true;
  }
  protected override void OnMouseDown(MouseEventArgs e) {
    this.Focus();
    base.OnMouseDown(e);
  }
  protected override void OnEnter(EventArgs e) {
    this.Invalidate();
    base.OnEnter(e);
  }
  protected override void OnLeave(EventArgs e) {
    this.Invalidate();
    base.OnLeave(e);
  }
  protected override void OnPaint(PaintEventArgs pe) {
    base.OnPaint(pe);
    if (this.Focused) {
      var rc = this.ClientRectangle;
      rc.Inflate(-2, -2);
      ControlPaint.DrawFocusRectangle(pe.Graphics, rc);
    }
  }
}
18
ответ дан 3 December 2019 в 20:03
поделиться

я думаю, это лучший метод:

http://felix.pastebin.com/Q0YbMt22

1
ответ дан 3 December 2019 в 20:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: