2

リストビューからオブジェクトを選択し、このようにカスタム オブジェクトにキャストしようとしています

MyObject foo = (MyObject)MyListView.SelectedItems[0];

しかし、これは私にコンパイルエラーを与えます

エラー 4 タイプ 'System.Windows.Forms.ListViewItem' を 'MyObject' に変換できません

4

3 に答える 3

2

デフォルトListViewはデータバインド可能ではありません (つまり、一部のオブジェクトをリスト ビューのデータ ソースとして割り当てることはできません)。ListViewItemデータ型にキャストできないオブジェクトが含まれています。そのため、このエラーが発生します。

カスタムオブジェクトを取得したい場合は、以下ListViewItemから手動で構築する必要がありますListViewItem:

ListViewItem item = (MyObject)MyListView.SelectedItems[0];
MyObject foo = new MyObject();
foo.FirstName = item.Text;
foo.LastName = item.SubItems[1].Text;
foo.Age = Int32.Parse(item.SubItems[2].Text);

または、カスタムオブジェクトをのTagプロパティに保存ListViewItemして戻すこともできます:

ListViewItem item = (MyObject)MyListView.SelectedItems[0];
MyObject foo = (MyObject)item.Tag;

ところでDataGridView、バインディングをサポートする使用を検討してください。

于 2013-07-25T12:05:31.390 に答える
0

この方法でキャストするのではなく、別の方法でオブジェクトを作成する必要があると思います。

アイテム内のテキストを取得する場合は、そのテキストを使用してオブジェクトを作成します。

string txt   = MyListView.SelectedItems[0].Text;
MyObject foo = new MyObject(txt);

次に、通常の方法でオブジェクトを使用します。詳細がなければ、何が必要かをこれ以上伝えることは困難です。

于 2013-07-25T12:07:45.390 に答える