繁体   English   中英

值始终返回null

[英]Value always return null

首先,我会解释我的计划。

我有一个winform,我用作控制面板。 从这里,我可以使用鼠标对我的桌面进行屏幕截图来定义区域。 就像剪切工具在Windows中的工作方式非常相似。

屏幕截图是使用我的屏幕截图类生成的,该类由另一个名为Form1的表单运行。 第二种形式没有其他代码,但仅用于生成屏幕截图将使用的矩形。 从这里开始,拍摄的屏幕截图存储在剪贴板中并传递回我的Screenshot类。

现在,从这里我想要的是我控制面板中的一个图片框来显示这个拍摄的图像。 完全像剪切工具的工作原理。 但是,我写的代码从屏幕截图类传递给控制面板的代码抱怨事件处理程序始终返回null。

我为此写的代码如下:

 Image img = (Image)bitmap;
 if (OnUpdateStatus == null) return;

 ProgressEventArgs args = new ProgressEventArgs(img);
 OnUpdateStatus(this, args);

我已经尝试注释掉if语句但是然后处理OnUpdateStatus抛出一个异常,说它不再存在。

现在,在我的控制面板表单中,我试图抓取该图像并使用以下代码显示:

    private ScreenCapture _screenCap;

    public ControlPanel()
    {
        InitializeComponent();
        _screenCap = new ScreenCapture();
        _screenCap.OnUpdateStatus += _screen_CapOnUpdateStatus;

    }



    private void _screen_CapOnUpdateStatus(object sender, ProgressEventArgs e)
    {

        imagePreview.Image = e.CapturedImage;
    }

我花了好几个小时,但我无法弄清楚为什么图像不会显示在我的ControlPanel上的图像框中。 任何有新鲜眼睛的人都可以帮助我吗? 为什么我拍摄的屏幕截图图像没有显示在我的ControlPanel上的图片框中?

这是问题,我认为(有很多代码可以浏览 - 一个简短但完整的例子会更好):

ScreenCapture capture = new ScreenCapture();
capture.CaptureImage(...);

这是ScreenCapture新实例 它没有附加任何事件处理程序(这就是为什么你看到OnUpdateStatus的值为null 。如果你想使用你在ControlPanel类中创建的实例,你会希望传递它到你的Form1 (例如在构造函数中)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM