当用户按“del”键时如何从图片框中删除图像...我没有找到PB的任何按键或键盘事件。
private void topRight_pbx_MouseClick(object sender, MouseEventArgs e)
{
imgSelected=true;
//need to accept "delete"key from keyboard?
topRight_pbx.Image = null;
topRFile = "";
}
答案 0 :(得分:4)
将imgSelected更改为:
private PictureBox picSelected = null;
在您的图片框上,单击将此变量设置为发件人:
picSelected = (PictureBox)sender;
然后在窗体的keydown或具有焦点的控件上运行图像删除代码 (表格示例):
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Delete)
picSelected.Image = null;
}
答案 1 :(得分:2)
这是因为PictureBox
控件永远无法获得焦点,非聚焦控件不会收到键盘输入事件。
正如documentation所示,KeyDown
事件(以及与键盘输入相关的其他事件)标有[BrowsableAttribute(false)]
,因为它们无法按预期工作。它们不打算由您的代码订阅。
它类似于Label
控制 - 您可以查看它,但它不可选择且无法获得焦点。
您需要找到另一种方式让用户指出他想删除当前显示在PictureBox
控件中的图片。
答案 2 :(得分:1)
我的一个项目中遇到了类似的问题。我通过添加一个屏幕外文本框来解决它。单击某些控件时,我会将焦点放在文本框中,并使用文本框来处理键盘输入。
PicureBox SelectedImage=null;
void Image_Click(object sender,...)
{
SelectedImage=(PictureBox)sender;
FocusProxy.Focus();
}
void FocusProxy_KeyDown(...)
{
if(e.KeyData==...)
{
SelectedImage.Image=null;
e.Handled=true;
}
}
答案 3 :(得分:1)
另一种方法可能是: 如果您正在使用pictureBox并且想要清除它:
Graphics g = Graphics.FromImage(this.pictureBox1.Image);
g.Clear(this.pictureBox1.BackColor);
之后,您可以再次在控件上绘制。
我希望这可以帮助某人