- 題名: ComboBoxとListBoxで共通の処理をしたい
- 日時: 2009/10/06 19:57:35
- ID: 25520
- この記事の返信元:
- (なし)
- この記事への返信:
- [25521] Re[1]: ComboBoxとListBoxで共通の処理をしたい2009/10/06 20:17:22
- [25522] Re[1]: ComboBoxとListBoxで共通の処理をしたい2009/10/06 20:19:29
- ツリーを表示
ICollection ではなくて IList でいけました。
Private Sub InitializeItem(ByRef TargetList As IList)
TargetList.Clear()
TargetList.Add("テストA")
TargetList.Add("テストB")
TargetList.Add("テストC")
End Sub
■No25520に返信(FutoNekoさんの記事)
やり方はかわりますが
派生クラスを作るのはいかがでしょうか
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim source As New List(Of String)
source.Add("hoge")
source.Add("fuga")
source.Add("mogera")
InitializableListbox1.initializeItem(list)
End Sub
End Class
Interface IItemInitializable
Sub initializeItem(ByVal source As List(Of String))
End Interface
Class InitializableListbox
Inherits ListBox
Implements IItemInitializable
Public Sub initializeItem(ByVal source As System.Collections.Generic.List(Of String)) _
Implements IItemInitializable.initializeItem
For Each s In source
Items.Add(s)
Next
End Sub
End Class
分類:[.NET]
こんにちは。 インターフェースをあわせたメソッドをつくっていますが キャストがうまくいかなくて動作してくれません。 記述しているのは次のテストコード Private Sub InitializeItem(ByRef TargetCollection As ICollection(Of Object)) TargetCollection.Clear() TargetCollection.Add("テストA") TargetCollection.Add("テストB") TargetCollection.Add("テストC") End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 'InitializeItem(ComboBox1.Items) InitializeItem(CType(ComboBox1.Items, ICollection(Of Object))) InitializeItem(ListBox1.Items) Dim ArrayList1 As New List(Of Object) InitializeItem(ArrayList1) MsgBox(ArrayList1.Item(2).ToString) End Sub ComboBox.ItemsでもListBox.ItemsでもArrayListでも 同じ動きをするメソッドを作りたいのですが このような場合、どのようにするのが適切なのでしょうか? 上記コードでは ArrayListに対するメッセージボックスは動きましたが ComboBoxとListBoxに対しても同じ処理をしたいのです。 InvalidCastExceptionが発生します。 教えてください。よろしくお願いします。