What I am attempting to accomplish is to move by drag and drop method a bunch of composite controls as outlined by the following image:
Currently I am able to do this by only the edge of the composite control. Is it even possible to be able to click on a child/daughter control in the composite control to be able to move the entire composite control?
Here is my code for the addition of the control to panel3
of the main form:
private void newPictureBox_Click(object sender, EventArgs e)
{
UserControl1 _UserControl = new UserControl1();
PictureBox _PictureBox = (PictureBox)sender;
string _NewControlClusterName = "_New" + _PictureBox.Name;
_UserControl.Name = _NewControlClusterName;
_UserControl.ThreadCount = 16;
_UserControl.ImageBackground = _PictureBox.BackColor;
_UserControl.Dock = DockStyle.Top;
_UserControl.AllowDrop = true;
_UserControl.Cursor = Cursors.SizeAll;
_UserControl.MouseMove += _UserControl_MouseMove;
_UserControl.DragDrop += _UserControl_DragDrop;
_UserControl.DragEnter += _UserControl_DragEnter;
string ColorName = toolTip1.GetToolTip(_PictureBox);
string ColorCode = toolTip2.GetToolTip(_PictureBox);
toolTip1.SetToolTip(_UserControl.pictureBox1, ColorName);
toolTip2.SetToolTip(_UserControl.pictureBox1, ColorCode);
toolTip2.Active = false;
_UserControl.PictureClick += new EventHandler(ClusterControl_Click);
_UserControl.TrackBarScroll += new EventHandler(GetTartanCode);
panel3.Controls.Add(_UserControl);
panel3.Controls.SetChildIndex(_UserControl, 0);
}
private void _UserControl_DragEnter(object sender, DragEventArgs e)
{
e.Effect = DragDropEffects.Move;
}
private void _UserControl_DragDrop(object sender, DragEventArgs e)
{
UserControl1 target = sender as UserControl1;
if (target != null)
{
int targetIndex = FindUserControlIndex(target);
if (targetIndex != -1)
{
string _UserControlFormat = typeof(UserControl1).FullName;
if (e.Data.GetDataPresent(_UserControlFormat))
{
UserControl1 source = e.Data.GetData(_UserControlFormat) as UserControl1;
int sourceIndex = this.FindUserControlIndex(source);
if (targetIndex != -1)
this.panel3.Controls.SetChildIndex(source, targetIndex);
}
}
}
}
private int FindUserControlIndex(UserControl1 _UserControl)
{
for (int i = 0; i < this.panel3.Controls.Count; i++)
{
UserControl1 target = this.panel3.Controls[i] as UserControl1;
if (_UserControl == target)
return i;
}
return -1;
}
private void _UserControl_MouseMove(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
UserControl1 _UserControl1 = sender as UserControl1;
_UserControl1.BorderStyle = BorderStyle.Fixed3D;
_UserControl1.DoDragDrop(_UserControl1, DragDropEffects.All);
}
}
private void ClusterControl_Click(object sender, EventArgs e)
{
PictureBox _PictureBox = (PictureBox)sender;
GroupBox _GroupBox = (GroupBox)_PictureBox.Parent;
UserControl1 _UserControl1 = (UserControl1)_GroupBox.Parent;
panel3.Controls.Remove(_UserControl1);
}