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:
Habt ihr irgendeine Idee
Gruß
Krebsbachbub
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
Gruß
Krebsbachbub