私は最近、インターフェースと、デフォルト状態での使用を超えてさらにカスタマイズする機能に非常に興味を持っています。
私は IList(of T) を具体的に研究しています。ArrayLists ではなく一般的なリストを使用する利点には、私は驚かされました。ここにテストの写真があります。試験について詳しく解説しているサイトです。
だから、自然と実験したくなりました。ForNext メソッドを使用して最初にリストを反復処理すると、コードは正常に機能します。2回目は、リスト内のフォームが破棄されているため、その名前にアクセスできません。リスト内のフォームのプロパティにアクセスする方法を知っている人は誰でもいます。
Public Class frmMain
Dim Cabinet As List(Of Form) = New List(Of Form)
Dim FormA As New Form1
Dim FormB As New Form2
Dim FormC As New Form3
Private Sub frmMain_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles _Me.Load
Cabinet.Add(FormA)
Cabinet.Add(FormB)
Cabinet.Add(FormC)
End Sub
Sub displayForm(ByVal aForm As Form)
Dim myFormName As String = ""
Stopwatch.Start()
If aForm.IsDisposed = False Then
aForm.Show()
Else
myFormName = aForm.(How do I access this objects Name?)
aForm = New Form '<----- I would rather simply use aForm = New(aForm)
aForm.Name = myFormName
aForm.Show()
End If
Stopwatch.Stop()
Dim RealResult As Decimal = (Stopwatch.ElapsedMilliseconds / 1000)
Debug.WriteLine(RealResult)
Stopwatch.Reset()
End Sub
Private Sub btnForEach_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnForEach.Click
'Dim instance as List
'Dim action as Action(of T)
'instance.ForEach(action)
'action = delegate to a method that performs an action on the object passeed to it
Cabinet.ForEach(AddressOf displayForm)
End Sub
VBがこれが汎用リストであることを知っている場合、つまりリストのタイプを認識でき、オブジェクトがすべてフォームに制限されている理由が本当にわかりません。リスト内の項目でコンストラクターを呼び出せない理由。元。aForm = 新しい aForm または aForm = 新しい Cabinet.aForm
誰か私のためにこれを開けてください。ありがとう。