应该使用PictureBox显示图像的简单代码不起作用(frm是我的表单):
PictureBox pb = new PictureBox();
pb.Image = new Bitmap("1.jpg");
pb.SizeMode = PictureBoxSizeMode.Zoom;
frm.Controls.Add(pb);
当发生此代码的事件时,我有NullReferenceExcpetion
错误发生在frm.Controls.Add(pb)
例外是:
System.NullReferenceException:未将对象引用设置为实例 一个对象。在Form1.HotKeyManager_HotKeyPressed(对象发送者, HotKeyEventArgs e)在C:\ Users \Алексей\ Documents \ Visual Studio中 2010 \项目\ NotepadCSharpSetup \ WinFormsAgain \ RealTrayForm \ test.cs中:行 52
完整代码:
static void HotKeyManager_HotKeyPressed(object sender, HotKeyEventArgs e)
{
Size ScreenSize = Screen.PrimaryScreen.Bounds.Size;
Bitmap image = new Bitmap(ScreenSize.Width, ScreenSize.Height);
using (Graphics g = Graphics.FromImage(image))
{
g.CopyFromScreen(Point.Empty, Point.Empty, ScreenSize);
}
Bitmap preview = new Bitmap(image.Width / 10, image.Height / 10);
using (Graphics gr = Graphics.FromImage(preview))
{
gr.SmoothingMode = SmoothingMode.AntiAlias;
gr.InterpolationMode = InterpolationMode.HighQualityBicubic;
gr.PixelOffsetMode = PixelOffsetMode.HighQuality;
gr.DrawImage(image, new Rectangle(0, 0, image.Width / 10, image.Height / 10));
}
preview.Save("1.jpg");
Form frm = (Form)sender;
PictureBox pb = new PictureBox();
pb.Image = new Bitmap("1.jpg");
pb.SizeMode = PictureBoxSizeMode.Zoom;
frm.Controls.Add(pb);
}
答案 0 :(得分:1)
我不相信new
关键字会返回Null
,除非您没有内存。赌注是sender
不是Form
Form frm = (Form)sender;
我认为这一行为空,这就是frm.Controls.Add(pb)
失败的原因。
答案 1 :(得分:1)
这一行:
Form frm = (Form)sender;
如果发件人不是Type Form,实际上会导致InvalidCastException(或类似的东西)。
投射物体的另一种方式是:
Form frm = sender as Form;
如果sender不是Form类型(而不是抛出异常),这实际上会将frm设置为null。
我会设置一个断点并检查哪个对象实际为空。我的猜测是发件人从一开始就是空的,并将其转换为Form不会做任何事情。
答案 2 :(得分:0)
最可能的原因是因为位图在当前正在查找的位置不存在。
确保您有正确尝试在图片框中显示的图像的路径。