Announcement

Collapse
No announcement yet.

Toolbox oder so ne art Midi Application

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Toolbox oder so ne art Midi Application

    Hallo zusammen,
    nachdem ich lange weg war, stürze ich mich nun voll ins geschehen und hab da gleich was .

    Also, ich möchte eine Application schreiben in der ich in einer Form eine sog. Toolbox habe (z.B. eine Form mit Button usw.) und eine zweite leere Form.

    Nun möchte ich den Button auf die zweite Form mit drag and drop ziehen.

    so was ähnliches habe ich schon, leider kann man hier nur innerhalb einer Form die controls verschieben:
    Code:
    Public Class Form1
        Inherits System.Windows.Forms.Form
    
        Private mLoading As Boolean = True
    
    #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 Label1 As System.Windows.Forms.Label
        Friend WithEvents GroupBox1 As System.Windows.Forms.GroupBox
        Friend WithEvents TextBox1 As System.Windows.Forms.TextBox
        Friend WithEvents CheckBox1 As System.Windows.Forms.CheckBox
        Friend WithEvents CheckBox2 As System.Windows.Forms.CheckBox
        <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
            Me.Label1 = New System.Windows.Forms.Label
            Me.GroupBox1 = New System.Windows.Forms.GroupBox
            Me.CheckBox2 = New System.Windows.Forms.CheckBox
            Me.CheckBox1 = New System.Windows.Forms.CheckBox
            Me.TextBox1 = New System.Windows.Forms.TextBox
            Me.GroupBox1.SuspendLayout()
            Me.SuspendLayout()
            '
            'Label1
            '
            Me.Label1.AutoSize = True
            Me.Label1.BackColor = System.Drawing.Color.Red
            Me.Label1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
            Me.Label1.Font = New System.Drawing.Font("Microsoft Sans Serif", 12.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
            Me.Label1.ForeColor = System.Drawing.Color.Yellow
            Me.Label1.Location = New System.Drawing.Point(12, 9)
            Me.Label1.Name = "Label1"
            Me.Label1.Size = New System.Drawing.Size(65, 22)
            Me.Label1.TabIndex = 0
            Me.Label1.Text = "Label1"
            '
            'GroupBox1
            '
            Me.GroupBox1.Controls.Add(Me.CheckBox2)
            Me.GroupBox1.Controls.Add(Me.CheckBox1)
            Me.GroupBox1.Location = New System.Drawing.Point(144, 72)
            Me.GroupBox1.Name = "GroupBox1"
            Me.GroupBox1.Size = New System.Drawing.Size(216, 96)
            Me.GroupBox1.TabIndex = 1
            Me.GroupBox1.TabStop = False
            Me.GroupBox1.Text = "GroupBox1"
            '
            'CheckBox2
            '
            Me.CheckBox2.Location = New System.Drawing.Point(16, 64)
            Me.CheckBox2.Name = "CheckBox2"
            Me.CheckBox2.Size = New System.Drawing.Size(88, 16)
            Me.CheckBox2.TabIndex = 1
            Me.CheckBox2.Text = "CheckBox2"
            '
            'CheckBox1
            '
            Me.CheckBox1.Location = New System.Drawing.Point(16, 40)
            Me.CheckBox1.Name = "CheckBox1"
            Me.CheckBox1.Size = New System.Drawing.Size(88, 16)
            Me.CheckBox1.TabIndex = 0
            Me.CheckBox1.Text = "CheckBox1"
            '
            'TextBox1
            '
            Me.TextBox1.Font = New System.Drawing.Font("Microsoft Sans Serif", 12.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
            Me.TextBox1.Location = New System.Drawing.Point(328, 224)
            Me.TextBox1.Name = "TextBox1"
            Me.TextBox1.Size = New System.Drawing.Size(160, 26)
            Me.TextBox1.TabIndex = 2
            Me.TextBox1.Text = "TextBox1"
            '
            'Form1
            '
            Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
            Me.ClientSize = New System.Drawing.Size(520, 269)
            Me.Controls.Add(Me.TextBox1)
            Me.Controls.Add(Me.GroupBox1)
            Me.Controls.Add(Me.Label1)
            Me.Name = "Form1"
            Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen
            Me.Text = "Form1"
            Me.GroupBox1.ResumeLayout(False)
            Me.ResumeLayout(False)
            Me.PerformLayout()
    
        End Sub
    
    #End Region
    
        Private mPos As Point
        Private mOldCursor As Cursor
    
    
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Dim C As Control
    
            Me.Text = "Controls verschieben: Taste Strg + Linke Maustaste"
    
            For Each C In Me.Controls
                ' (die in GroupBox1 liegenden Checkboxen sind hiervon nicht betroffen)
    
                C.Text = "   Move Me ...   "
    
                ' gemeinsame Ereignisprozeduren für alle direkt  
                ' auf der Form liegenden Controls zuweisen
                AddHandler C.MouseDown, AddressOf Control_MouseDown
                AddHandler C.MouseMove, AddressOf Control_MouseMove
                AddHandler C.MouseUp, AddressOf Control_MouseUp
            Next
        End Sub
        Private Sub Control_MouseDown(ByVal Sender As Object, ByVal E As System.Windows.Forms.MouseEventArgs)
            Dim C As Control
    
            C = DirectCast(Sender, Control)
    
            ' akt. Mauszeigerdarstellung merken
            mOldCursor = C.Cursor
    
            ' akt. Mausposition merken
            mPos = New Point(E.X, E.Y)
    
            If ModifierKeys = Keys.Control Then
                C.Cursor = Cursors.SizeAll
            End If
        End Sub
    
        Private Sub Control_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
            Dim C As Control = DirectCast(sender, Control)
            C.Cursor = mOldCursor
        End Sub
    
        Private Sub Control_MouseMove(ByVal Sender As Object, ByVal E As System.Windows.Forms.MouseEventArgs)
            ' Control (Sender) verschieben, wenn Strg-Taste + Linke Maustaste
            Dim C As Control
            Dim Left As Integer
            Dim Top As Integer
            Dim MaxX As Integer
            Dim MaxY As Integer
    
            If ModifierKeys = Keys.Control Then
                If E.Button = MouseButtons.Left Then
                    C = DirectCast(Sender, Control)
    
                    C.Cursor = Cursors.SizeAll
    
                    MaxX = Me.ClientSize.Width - C.Width
                    MaxY = Me.ClientSize.Height - C.Height
    
                    Left = C.Left + (E.X - mPos.X)
                    If Left < 0 Then
                        ' nicht über den linken Rand verschieben
                        Left = 0
                    End If
                    If Left > MaxX Then
                        ' nicht über den rechten Rand verschieben
                        Left = MaxX
                    End If
    
                    Top = C.Top + (E.Y - mPos.Y)
                    If Top < 0 Then
                        ' nicht über den oberen Rand verschieben
                        Top = 0
                    End If
                    If Top > MaxY Then
                        ' nicht über den unteren Rand verschieben
                        Top = MaxY
                    End If
    
                    C.Left = Left
                    C.Top = Top
                    ' das gerade bewegte Control in den Vordergrund bringen
                    C.BringToFront()
    
                    ' Controlposition in der Titelleiste der Form anzeigen
                    Me.Text = "Left: " & Left.ToString & "; Top: " & Top.ToString
                End If
            End If
        End Sub
    
        Private Sub Form1_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles 
    
     If mLoading Then
                mLoading = False
                MsgBox("Drücken Sie die Strg-Taste + Linke Maustaste" & ControlChars.CrLf & _
                           "zum Verschieben der Controls", MsgBoxStyle.Information)
                Me.BringToFront()
            End If
        End Sub
    End Class
    Habt ihr irgendeine Idee

    Gruß
    Krebsbachbub
Working...
X