Hi, ich bins schon wieder...
Kann jemand was mit folgender Fehlermeldung anfangen:
"Eine nicht behandelte Ausnahme des Typs 'System.ArgumentException' ist in system.windows.forms.dll aufgetreten.
Zusätzliche Informationen: Steuerelemente, die für einen Threads erstellt wurden, können einem Steuerelement im einem anderen Thread nicht übergeordnet werden."
Erläuterung:
Ich habe einen Thread, der (bei Bedarf) Steuerelemente erstellen soll. So wie ich mir das vorgestellt habe, funktioniert es aber nicht:
Public Class Form1
Inherits System.Windows.Forms.Form
#Region " Vom Windows Form Designer generierter Code "
Public Sub New()
MyBase.New()
' Dieser Aufruf ist für den Windows Form-Designer erforderlich.
InitializeComponent()
' Initialisierungen nach dem Aufruf InitializeComponent() hinzufügen
End Sub
' Die Form überschreibt den Löschvorgang der Basisklasse, um Komponenten zu
' bereinigen.
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub
' Für Windows Form-Designer erforderlich
Private components As System.ComponentModel.IContainer
'HINWEIS: Die folgende Prozedur ist für den Windows Form-Designer
' erforderlich
'Sie kann mit dem Windows Form-Designer modifiziert werden.
'Verwenden Sie nicht den Code-Editor zur Bearbeitung.
Friend WithEvents Button1 As System.Windows.Forms.Button
Friend WithEvents Button2 As System.Windows.Forms.Button
Friend WithEvents GroupBox1 As System.Windows.Forms.GroupBox
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
Me.Button1 = New System.Windows.Forms.Button()
Me.Button2 = New System.Windows.Forms.Button()
Me.GroupBox1 = New System.Windows.Forms.GroupBox()
Me.SuspendLayout()
'
'Button1
'
Me.Button1.Location = New System.Drawing.Point(48, 344)
Me.Button1.Name = "Button1"
Me.Button1.Size = New System.Drawing.Size(136, 32)
Me.Button1.TabIndex = 0
Me.Button1.Text = "normal"
'
'Button2
'
Me.Button2.Location = New System.Drawing.Point(184, 344)
Me.Button2.Name = "Button2"
Me.Button2.Size = New System.Drawing.Size(128, 32)
Me.Button2.TabIndex = 1
Me.Button2.Text = "thread"
'
'GroupBox1
'
Me.GroupBox1.Location = New System.Drawing.Point(40, 24)
Me.GroupBox1.Name = "GroupBox1"
Me.GroupBox1.Size = New System.Drawing.Size(608, 208)
Me.GroupBox1.TabIndex = 2
Me.GroupBox1.TabStop = False
Me.GroupBox1.Text = "GroupBox1"
'
'Form1
'
Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
Me.ClientSize = New System.Drawing.Size(848, 402)
Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.GroupBox1, _
Me.Button2, Me.Button1})
Me.Name = "Form1"
Me.Text = "Form1"
Me.ResumeLayout(False)
End Sub
#End Region
Private Bild() As PictureBox
Private myThread As System.Threading.Thread
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles Button1.Click
Erstellen()
End Sub
Private Sub Erstellen()
Dim t As Integer
ReDim Bild(4)
For t = 0 To 4
Bild(t) = New PictureBox()
With Bild(t)
.Left = 20 + (110 * t)
.Top = 20
.Width = 100
.Height = 100
.BorderStyle = BorderStyle.Fixed3D
End With
Me.GroupBox1.Controls.Add(Bild(t))
Next
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles Button2.Click
myThread = New System.Threading.Thread(AddressOf Erstellen)
myThread.Start()
End Sub
End Class Das linke Button erstell 5 Pictureboxen "normal". Das rechte Button über einen Thread (Sollte es zumindest...).
Frage: Gibts eine Möglichkeit Steuerelemente über einen Thread zu erstellen????
Gruß
Silver |