Die Community zu .NET und Classic VB.
Menü

FAQ 0056: Wie kann ich Steuerelemente zur Laufzeit erstellen?

 von 

Frage 

Wie kann ich Steuerelemente zur Laufzeit erstellen?

Mit Vorlage  

Am einfachsten ist es, wenn man vom benötigten Steuerelement eine Vorlage auf der Form hat.
Der Steuerelemete zur Laufzeit dynamisch laden [Tipp 0014] beschreibt das genaue Vorgehen.

Ohne Vorlage  

Das ist bereits deutlich anspruchsvoller, weil man unter Umständen die Registry zu Rate ziehen muß.
Das genaue Vorgehen beschreibt der Steuerelemente aus dem Nichts zur Laufzeit erstellen [Tipp 0316].

Anmerkungen und Hinweise  

Anmerkung von Konrad Doblander:
Many programmers erroneously believe that you can add only intrinsic controls to your form in this manner, using the ProgIDs shown in Table 1.

Table 1: ProgIDs of VB's intrinsic controls
CheckBox => VB.CheckBox
ComboBox => VB.ComboBox
CommandButton => VB.CommandButton
Frame => VB.Frame
HScrollBar => VB.HScrollbar
Image => VB.Image
Label => VB.Label
Line => VB.Line
ListBox => VB.ListBox
OptionButton => VB.OptionButton
PictureBox => VB.PictureBox
Shape => VB.Shape
TextBox => VB.TextBox
Timer => VB.Timer
VScrollBar => VB.VScrollBar

In fact, however, you can add any ActiveX control to your form dynamically, as long as you have the correct ProgID.
As I mentioned, ProgIDs are defined in the registry and take the general form
Library_Name.Control_Name

Quelle: http://vb.oreilly.com/ron/dynamic.html

In diesem Zusammenhang ist WithEvents auch bei später Bindung (Late Binding) nutzen [Tipp 0655] für den Einen oder Anderen sicher lesenswert.

Manche Steuerelemente sind nicht so pflegeleicht wie die, die in Visual Basic standardmäßig angeboten werden. Ein Kandidat ist Winsock, das Problem und die Lösung beschreibt Microsoft in einem Knowledge Base-Artikel:
313984 - INFO: Visual Basic Winsock control run-time error 429 and scalability

Ihre Meinung  

Falls Sie Fragen zu dieser FAQ haben, Ihre Erfahrung mit anderen Nutzern austauschen möchten oder auf eine Ergänzung hinweisen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.