【问题标题】:Robot Controller double click event not assigning value机器人控制器双击事件未赋值
【发布时间】:2014-05-19 11:06:25
【问题描述】:

您好,我用 WPF C# 编写了一个程序来扫描机器人控制器,显示它们的数据,然后在按下特定按钮时开始和停止运行。

我可以扫描并显示信息,但是当我双击列表视图项时,它的信息没有分配给controller

    private void listView1_DoubleClick(object sender, MouseButtonEventArgs e)
    {
        ListViewItem item = sender as ListViewItem; //this.listView1.SelectedItems[0];
        if (item != null)
        {
            ControllerInfo controllerInfo = (ControllerInfo)item.Tag;
            if (controllerInfo.Availability == Availability.Available)
            {
                if (controllerInfo.IsVirtual)
                {
                    this.controller = ControllerFactory.CreateFrom(controllerInfo);
                    this.controller.Logon(UserInfo.DefaultUser);
                    listView1.Items.Clear();
                    listView1.Items.Add(item);
                    EnableControllerFunctionality();
                }

谢谢

【问题讨论】:

  • controller 为空,你必须为控制器分配一个合适的值。
  • doubleClick 事件处理程序应将所选项目的值分配给控制器

标签: c# wpf robotics


【解决方案1】:

您可以通过设置断点轻松调试它,但是是的,我还假设 controllernull。您需要检查controller设置的位置以及controller设置为null的原因。


以下部分似乎从您从列表项中获得的controllerInfo 分配了一个新控制器。你说它没有。虽然一个简单的断点和一个逐步调试过程可以更清楚地了解正在发生的事情,但我可以写下一些疯狂的猜测:

可能的问题:

  1. item == null: 代码块根本不执行
  2. controllerInfo.Availability != Availability.Available: 代码块没有执行
  3. controllerInfo.IsVirtual == false: 分配没有执行
  4. ControllerFactory.CreateFrom 返回null:您应该在this.controller.Logon(UserInfo.DefaultUser); 行中得到一个异常
  5. 可能您在代码中的某个位置将this.controller 设置为null

那是哪一个?

【讨论】:

  • 我现在可以看到controller = null,第二段代码是我的listview双击事件处理程序,这应该将所选项目的值分配给控制器,但事实并非如此。知道为什么吗?
  • 我编辑了我的答案。您必须调试代码以查看问题所在。您的代码看起来不错,但仅看代码无法诊断问题。
  • 我已经完成并调试了代码,看看第一个错误在哪里 ListViewItem item = sender as ListViewItem; 似乎是问题,因为 item 为空
  • 可能 'as' 不能用作转换器,因此返回 item=null
  • 我需要将选定的对象绑定到“项目”吗?如果有怎么办?
猜你喜欢
  • 2012-02-24
  • 1970-01-01
  • 2014-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-06
相关资源
最近更新 更多