2010-04-30 3 views
9

Я делаю очень простой редактор карт. Я нахожусь на полпути, и одна проблема, которую я нажимаю, - это удаление объекта.Как сделать выбор для фотокамер?

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

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

+0

в языке ведьмы, хотите, чтобы вы это сделали? – Werewolve

+0

@were: Я думаю, вы можете предположить C# или VB.NET. Первое кажется более распространенным. Тем не менее, перевод самого * кода * должен быть наименьшей из проблем. – Joey

+0

C# и я могу читать vb просто отлично. Возможно, я рассмотрю возможность перетаскивания объекта на экран с помощью решения для удаления. К плохому я не думал об этом сразу. – 2010-04-30 08:44:47

ответ

17

Вы хотите 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); 
    } 
    } 
} 
+0

Спасибо, он работает красиво: D – 2010-05-03 14:21:48

+0

@Hans Passant - действительно ли он участвует в порядке табуляции в форме окна? Потому что он не получает фокус при нажатии TAB из предыдущего элемента управления или CTRL + TAB нажата из следующего элемента управления. Какова ваша концепция? С уважением. – priyamtheone

+0

Да, это была точка этого кода. Я только что проверил его, как матери. Не забудьте на самом деле * заменить * поле с этим новым элементом управления. –

1

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

http://felix.pastebin.com/Q0YbMt22

+0

Я вижу, где ты идешь с этим. – 2010-04-30 09:10:23

+0

Вы можете использовать тот же эффект в методе делегата в обработчике событий ClickBox ClickBox. –

Смежные вопросы