|
分類:[VB.NET/VB2005 以降]
VisualStudio2017 VB言語で開発をしております。
メインフォームのListBoxに文字列を表示したいのですが、
イベントを介してメインのコントロールの操作を行いたい場合には、
参照が必要なのでしょうか。
また、Form1.ListTextAdd(str)のように[MainForm名].[MainFormのメソッド]を呼び出す際には、
コントロールの操作は制限されてしまうのでしょうか。
---メイン
Public Class Form1
Public subclass As SubClass = New SubClass
Private WithEvents class2 As SubClass = New SubClass
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
WriteItemListBox("Button1をクリックしました。")
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
AddStr()
End Sub
Public Sub AddStr()
subclass.AddSubItem()
End Sub
Public Sub WriteItemListBox(ByVal str As String)
Dim listadd As AddListItem = New AddListItem(ListBox1)
listadd.AddItem(str)
End Sub
Public Sub ListTextAdd(ByVal str As String)
WriteItemListBox(str)
End Sub
Private Sub Receiver(ByVal obj As Object, ByVal e As Sub2Class) Handles class2.Receiver
subclass.AddMainControl(e.myText)
End Sub
End Class
---サブ1
Public Class SubClass
Public Event Receiver(ByVal sender As Object, ByVal e As Sub2Class)
Public Sub AddSubItem()
Try
RaiseEvent Receiver("test", New Sub2Class("Button2をクリックしました。"))
Catch ex As Exception
MessageBox.Show(ex.ToString)
End Try
'Form1.WriteItemListBox("Button2をクリックしました。")
End Sub
Public Sub AddMainControl(ByVal str As String)
Form1.ListTextAdd(str)
End Sub
End Class
Public Class Sub2Class
Public myText As String
Public Sub New(ByVal str As String)
CopyStr(str)
End Sub
Private Function CopyStr(ByVal str As String) As Boolean
Try
myText = str
Return True
Catch ex As Exception
Return False
End Try
End Function
End Class
---表示
Public Class AddListItem
Private list As New ListBox
Sub New(ByVal box As ListBox)
list = box
End Sub
Public Sub AddItem(ByVal str As String)
list.Items.Insert(0, str)
If list.Items.Count > 20 Then
list.Items.RemoveAt(20)
End If
End Sub
End Class
|