0

WinForms アプリケーションを作成していて、データソースを持つリストボックスがObservableCollection<ParentClass>あり、クラスのサブクラスに基づいて特定のラベルを設定しようとしています。「この時点でクラス名は無効です」というエラーが表示されます。サンプルコード:

using System;    
public class Parent
{
    public Parent() { }

    public class ChildA : Parent
    {
        public ChildA() { }
    }
}

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();

        ObservableCollection<Parent> listBoxSource = 
               new ObservableCollection<Parent>();

        listBox.DataSource = listBoxSource;

    }

    private void customerListBox_SelectedIndexChanged(object sender, 
                 EventArgs e)
    {

        if (customerListBox.SelectedItem.GetType() ==
              Parent.ChildA) // <---Error Here
        {
            //Code Here
        }
    }    
}

要素のタイプに基づいてアクションを実行するより良い方法はありますか?

4

1 に答える 1

0

これを変える:

 if (customerListBox.SelectedItem.GetType() == Parent.ChildA)

に:

 if (customerListBox.SelectedItem is Parent.ChildA)

またはあなたがしていたように:

 if (customerListBox.SelectedItem.GetType() == typeof(Parent.ChildA))

演算子 "is" を使用すると、オブジェクトが null かどうかを確認することを避けることができます。

于 2013-07-27T02:07:46.290 に答える