Я делаю очень простой редактор карт. Я являюсь промежуточным через него и одна проблема, которую я поразил, то, как удалить объект.
Я хотел бы нажать, удаляют, но, кажется, нет никакого keydown события для полей изображения, и будет казаться, что у меня будет он только на моем поле списка.
Каково лучшее решение для удаления объекта в моем редакторе?
Вы хотите, чтобы 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);
}
}
}