【问题标题】:Checking class types in a list box检查列表框中的类类型
【发布时间】:2021-12-01 13:52:05
【问题描述】:

我正在构建一个 GUI,其中有两个班级,学生和研究生。研究生是学生的子班。用户将填写表格以将学生添加到列表中。为了将所述信息添加到视图表单中,我需要检查所选项目的类型。我试过了

if(view_list.selectedItem.GetType == Student)

但它不起作用。如何检查所选项目的类型?

【问题讨论】:

  • 什么是view_list?
  • 你能详细说明it doesn't work吗?
  • view_list 是我命名的列表框。当我说它不起作用时,它说 Student 是一种类型,在这种情况下是无效的。
  • @Professor_Arkansas 你能分享你如何填充view_list的代码吗?您通过编写这段代码试图解决的目的是什么?
  • 通过点击if,按 F9 使其变为红色,按 F5 并调用所需的任何操作集,这相对容易(并且对您来说更容易)解决(比我们容易)让这段代码执行。 VS 将停在带有黄色条的行上,然后您只需指向 selectedItem 属性即可查看工具提示,显示变量是什么类型以及您可以探索的当前值扩展树。 Locals 窗口中也显示了相同的内容,它不会在鼠标滑动时消失。

标签: c# types listbox


【解决方案1】:

简而言之,您需要将XXX.GetType()typeof(YOUR_TYPE) 进行比较。

至于原因,如果你曾经盯着 Visual Studio 提供的 IntelliCode 提示,你应该看到函数 object.GetType() 返回 Type

但是,Student 或任何其他原始类型(如 intstring 等)的类型为 class

您不能比较不同类型的两个值(在这种情况下,左侧是Type,而右侧是class

typeof() 所做的是获取 Type

【讨论】:

    【解决方案2】:

    有几个问题。 您尝试使用的GetType 实际上是一种方法,而不是属性,因此您需要将其称为GetType()

    接下来需要使用typeof(Student)进行比较。

    如果view_list是一个Winforms ListView,那么SelectedItem应该以大写S开头

    那么你的代码应该是。

    if (view_list.SelectedItem.GetType() == typeof(Student))
    {
       //Do your stuff
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-07
      • 1970-01-01
      • 2018-04-05
      • 2019-05-10
      • 2019-01-05
      • 1970-01-01
      • 2018-10-11
      • 2012-12-20
      相关资源
      最近更新 更多