首页 > 解决方案 > 如何在 C# 中将一个事件处理程序传递给另一个事件处理程序

问题描述

我有一个显示 4 个摄像头视图的软件。它工作正常。我想修改它。

现在的问题是我想从 4 个不同的相机视图中捕捉图片。该软件仅捕获 4 个摄像头视图,除非我在调用此选择单击事件期间单击其中一个视图,并且它将传递该特定摄像头事件处理程序并将该处理程序数据存储到数组中。一旦我得到相机面板处理程序,我可以单击相机图像捕获按钮来拍摄快照。

但我想将事件相机处理程序(它告诉我正在选择哪个屏幕进行屏幕截图)传递给捕获按钮事件。

那怎么可能呢?有没有人有想法。复制下面的两个事件处理程序代码。

此 API 从相机屏幕捕获快照private void realPanel_Click(object sender, EventArgs e)

private void CapturePicture_Click(object sender, EventArgs e)
{
    if (m_curRealPanel.m_playhandle == IntPtr.Zero)
    {
        return;
    }
    String strTemp = string.Copy(LocalSetting.m_strPicSavePath);
    DateTime oDate = DateTime.Now;
    String strCurTime = oDate.ToString("yyMMddHHmmss", DateTimeFormatInfo.InvariantInfo);
    LocalSetting.m_strPicSavePath += m_deviceInfoList[m_curRealPanel.m_deviceIndex].m_ip;
    LocalSetting.m_strPicSavePath += "_";
    LocalSetting.m_strPicSavePath += (m_curRealPanel.m_channelIndex + 1);
    LocalSetting.m_strPicSavePath += "_";
    LocalSetting.m_strPicSavePath += strCurTime;

    byte[] picSavePath;
    GetUTF8Buffer(LocalSetting.m_strPicSavePath, NETDEVSDK.NETDEV_LEN_260, out picSavePath);
    int iRet = NETDEVSDK.NETDEV_CapturePicture(m_curRealPanel.m_playhandle, picSavePath, (int)NETDEV_PICTURE_FORMAT_E.NETDEV_PICTURE_JPG);
    if (NETDEVSDK.FALSE == iRet)
    {
        showFailLogInfo(m_deviceInfoList[m_curSelectedTreeDeviceIndex].m_ip + " chl:" + (m_curSelectedTreeChannelIndex + 1), "CapturePicture", NETDEVSDK.NETDEV_GetLastError());
        //return;
    }

    showSuccessLogInfo(m_deviceInfoList[m_curSelectedTreeDeviceIndex].m_ip + " chl:" + (m_curSelectedTreeChannelIndex + 1), "CapturePicture");

    LocalSetting.m_strPicSavePath = strTemp;
}

private void realPanel_Click(object sender, EventArgs e)
{
    m_curRealPanel = sender as PlayPanel;
    setDeviceTreeSelectNode();

    if (true == m_curRealPanel.m_recordStatus)
    {
        LocalRecodBtn.Text = "Stop";
    }
    else
    {
        LocalRecodBtn.Text = "Record";
    }
}

标签: eventhandler

解决方案


推荐阅读