vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
TOP-Angebot: 17 bzw. 24 Entwickler-Vollversionen zum unschlagbaren Preis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
Re: Möglich? Komplette Form zur Laufzeit aus DB erzeugen 
Autor: Maywood
Datum: 15.12.04 11:50

Eine weitere Möglichkeit wäre, du verwendest "normalen" VB bzw. C# Code und kompilierst diesen mittels Codedom zur LZ. Hier ein kl. Bsp.:
Imports System.CodeDom.Compiler
Imports System.CodeDom
'// 
Private Function CreateAssemblyFromCode(ByVal Code As String) As _
  System.Reflection.Assembly
        Dim cdp As CodeDomProvider = New Microsoft.VisualBasic.VBCodeProvider                                   
        Dim comp As ICodeCompiler = cdp.CreateCompiler()
        Dim cp As New CompilerParameters
        Dim cr As CompilerResults
        cp.GenerateInMemory = True
        cp.GenerateExecutable = False
        cp.ReferencedAssemblies.Add("System.Windows.Forms.dll")
        cp.ReferencedAssemblies.Add("System.Drawing.dll")
        cp.ReferencedAssemblies.Add("System.dll")
        cr = comp.CompileAssemblyFromSource(cp, Code)
        If cr.Errors.Count <> 0 Then
            For A As Integer = 0 To cr.Errors.Count - 1
                Debug.WriteLine(cr.Errors(A).ToString())
            Next
            Return Nothing
        Else
            Return cr.CompiledAssembly
        End If
    End Function
 
    Public Sub ShowForm(ByVal Code As String)
        Dim ASM As System.Reflection.Assembly = CreateAssemblyFromCode(Code)
        Dim O As Object = ASM.CreateInstance("myForms.myForm")
        Dim T As Type = O.GetType()
        Dim MI As System.Reflection.MethodInfo = T.GetMethod("Show", New Type() _
          {})
        MI.Invoke(O, New Object() {})
    End Sub
 
    Private Sub Button15_Click(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles Button15.Click
        Dim code As String = New IO.StreamReader("C:\Temp\Form.txt").ReadToEnd
        Me.ShowForm(code)
    End Sub
Code der Form.txt:
Namespace myForms
    Public Class myForm
        Inherits System.Windows.Forms.Form
        Public Sub New()
            MyBase.New()
            InitializeComponent()
        End Sub
        Friend WithEvents Button1 As System.Windows.Forms.Button
        Friend WithEvents TextBox1 As System.Windows.Forms.TextBox
        Friend WithEvents Button2 As System.Windows.Forms.Button
        Private Sub InitializeComponent()
            Me.Button1 = New System.Windows.Forms.Button
            Me.TextBox1 = New System.Windows.Forms.TextBox
            Me.Button2 = New System.Windows.Forms.Button
            Me.SuspendLayout()
            Me.Button1.Location = New System.Drawing.Point(8, 8)
            Me.Button1.Name = "Button1"
            Me.Button1.Size = New System.Drawing.Size(472, 24)
            Me.Button1.TabIndex = 0
            Me.Button1.Text = "Test"
            Me.TextBox1.Location = New System.Drawing.Point(8, 40)
            Me.TextBox1.Name = "TextBox1"
            Me.TextBox1.Size = New System.Drawing.Size(472, 20)
            Me.TextBox1.TabIndex = 1
            Me.TextBox1.Text = "TextBox1"
            Me.Button2.Location = New System.Drawing.Point(344, 72)
            Me.Button2.Name = "Button2"
            Me.Button2.Size = New System.Drawing.Size(136, 24)
            Me.Button2.TabIndex = 2
            Me.Button2.Text = "Close"
            Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
            Me.ClientSize = New System.Drawing.Size(488, 101)
            Me.Controls.Add(Me.Button2)
            Me.Controls.Add(Me.TextBox1)
            Me.Controls.Add(Me.Button1)
            Me.Name = "Form3"
            Me.Text = "Form3"
            Me.ResumeLayout(False)
        End Sub
        Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As _
          System.EventArgs) Handles Button2.Click
            Me.Close()
        End Sub
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _
          System.EventArgs) Handles Button1.Click
            Me.TextBox1.Text = "Hello World!"
        End Sub
    End Class
End Namespace
(Dies ist aber nur ein sehr einfaches Bsp. Ob diese Technik bei komplexen Programmen/Formularen empfehlenswert ist, bezweifle ich einfach mal. Soll eher eine Inspiration sein... )
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Möglich? Komplette Form zur Laufzeit aus DB erzeugen1.950Spassmann14.12.04 18:58
Re: Möglich? Komplette Form zur Laufzeit aus DB erzeugen1.168ModeratorFZelle14.12.04 19:09
Re: Möglich? Komplette Form zur Laufzeit aus DB erzeugen1.235Spassmann14.12.04 19:30
Re: Möglich? Komplette Form zur Laufzeit aus DB erzeugen1.135ModeratorFZelle14.12.04 19:41
Re: Möglich? Komplette Form zur Laufzeit aus DB erzeugen1.152spike2414.12.04 19:49
ich weiß bin neugierig 1.135Micke15.12.04 19:47
Re: ich weiß bin neugierig 1.140spike2416.12.04 10:41
Re: ich weiß bin neugierig 1.175spike2416.12.04 10:42
Re: ich weiß bin neugierig 1.095Micke17.12.04 07:30
Re: ich weiß bin neugierig 1.113spike2417.12.04 09:00
Re: ich weiß bin neugierig 1.129Micke17.12.04 10:40
Re: ich weiß bin neugierig 1.122spike2417.12.04 10:43
Re: ich weiß bin neugierig 1.123Micke17.12.04 16:02
Re: Möglich? Komplette Form zur Laufzeit aus DB erzeugen1.287Spassmann15.12.04 07:40
dynamisches class loading1.188Micke15.12.04 20:18
Re: Möglich? Komplette Form zur Laufzeit aus DB erzeugen1.784Maywood15.12.04 11:50
Re: Möglich? Komplette Form zur Laufzeit aus DB erzeugen1.098Spassmann15.12.04 17:15
Wo ist der Waldi?1.111Drapondur15.12.04 18:18
Re: Wo ist der Waldi?1.166Maywood15.12.04 19:37
Re: Möglich? Komplette Form zur Laufzeit aus DB erzeugen1.153Maywood15.12.04 19:36
Re: Möglich? Komplette Form zur Laufzeit aus DB erzeugen1.170Micke15.12.04 19:45
Re: Möglich? Komplette Form zur Laufzeit aus DB erzeugen1.121Maywood15.12.04 20:24
Re: Möglich? Komplette Form zur Laufzeit aus DB erzeugen1.099Spassmann16.12.04 08:57

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel