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:
Nutze VisualStudio 2005
bin für jede Hilfe offen
Danke Czemmel
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 MyBase.Activated
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
Nutze VisualStudio 2005
bin für jede Hilfe offen
Danke Czemmel