PictureBoxコントロールから派生したカスタム コントロールがあります。そのためのKeyDownイベントを書きたいのですが、以下のコードを書きましたが、まだ使用できません。以下のコードを確認して、何か間違っているか、追加が必要かどうか教えてください。デフォルトではPictureBoxのKeyDownイベントがないことを知っているので、KeyDownイベントを使用してカスタムの選択可能なPictureBoxを作成しようとしています...
using System;
using System.Linq;
using System.Windows.Forms;
namespace BenisImageDownloader
{
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 OnKeyDown(KeyEventArgs e)
{
if (e.KeyCode == Keys.Up || e.KeyCode == Keys.Down || e.KeyCode == Keys.Left || e.KeyCode == Keys.Right)
e.Handled = true;
base.OnKeyDown(e);
}
protected override bool IsInputKey(Keys keyData)
{
if (keyData == Keys.Up || keyData == Keys.Down) return true;
if (keyData == Keys.Left || keyData == Keys.Right) return true;
return base.IsInputKey(keyData);
}
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);
}
}
}
}
私は、論文を提出するために Windows Form Application v4.0 プロジェクト (WPF ではない) に取り組んでいる学生です。