从C#中的PictureBox中删除图像

时间:2010-12-29 11:16:40

标签: c# .net winforms picturebox

当用户按“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 = "";

           }

4 个答案:

答案 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);

之后,您可以再次在控件上绘制。

我希望这可以帮助某人