【问题标题】:How can I use the data in private area when I click the button单击按钮时如何使用私人区域中的数据
【发布时间】:2021-12-29 09:22:43
【问题描述】:

我正在尝试从私有类中获取字节并在 btn.click 中使用它。我该怎么做?

这里是示例代码:


private void CameraConnnection_DataReceived(object sender, BReceivedData x)
        {
            byte[] data = e.ReceivedData;
        }

        private void BtnGetImage_Click(object sender, EventArgs e)
        {
            unsafe
            {
               byte a[]= e.ReceivedData;// This is not working how can I get received data from there.There is a event and it's triggering from there.
            }

【问题讨论】:

  • 您是否尝试访问BtnGetImage_Click()CameraConnnection_DataReceived()e.ReceivedData 值?一种方法不能访问另一个方法的局部变量,因为它们是本地的。您需要将 data 提升为一个字段才能从这两种方法中访问它。
  • 是的,我试过了。你能解释一下我该怎么做吗?@ Lance U. Matthews
  • 我正在尝试在 CameraConnnection_DataReceived() 中为 btnGetImage.Click 访问 e.ReceivedData

标签: c# oop


【解决方案1】:

由于EventArgs 类没有ReceivedData 字段或属性,下面的代码无法编译

private void BtnGetImage_Click(object sender, EventArgs e)
{
  ...
  // Compile time error: ReceivedData doesn't exist
  byte a[] = e.ReceivedData;
  

您可以在DataReceived 事件上获取并保存 ReceivedData,但在Click 上使用它:

private byte[] receivedData = new byte[0];

private void CameraConnnection_DataReceived(object sender, BReceivedData x)
{
    // ?? new byte[0] - to be on the safe side and never have null
    receivedData = e.ReceivedData ?? new byte[0];
}

private void BtnGetImage_Click(object sender, EventArgs e) {
  byte[] a = receivedData;

  ...
}

【讨论】:

  • 成功了。谢谢。@Dmitry Bychenko
  • 我有一个小问题。当我编译代码时,它没有填满(它是 0。)。我应该做些什么不同@Dmitry Bychenko
  • n_stckwff:是时候调试了:请在recievedData = ... 上设置一个断点并检查通过e.RecievedData 发送的内容
  • 我刚刚调试知道。你写的部分正在工作。再次感谢你。@ Dmitry Bychenko
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多