void clone_MouseDown(object sender, MouseEventArgs e) { if (e.Clicks == 1 && e.Button == MouseButtons.Left) { base.OnMouseDown(e); DoDragDrop(sender, DragDropEffects.All); } else if (e.Clicks > 1 && e.Button == MouseButtons.Left) { var control = sender as Control; var parent = control.Parent as FlowLayoutPanel; parent.Controls.Remove(control); } LastElementChanged?.Invoke(this, null); }
private void flowLayoutPanel1_DragDrop(object sender, DragEventArgs e) { var name = e.Data.GetData(typeof(string)) as string; var control = this.Controls.Find(name, true).FirstOrDefault() as Button; if (control != null) { var panel = sender as FlowLayoutPanel; var clone = control.Clone(); clone.Dock = DockStyle.None; clone.AutoSize = true; clone.AutoSizeMode = AutoSizeMode.GrowAndShrink; clone.AllowDrop = true; clone.KeyDown += Clone_KeyDown; clone.DragOver += clone_DragOver; clone.MouseDown += clone_MouseDown; clone.DragEnter += clone_DragEnter; clone.BackColor = Color.Lavender; if (clone.Text == "haswordofdict()") { clone.ContextMenuStrip = new ContextMenuStrip(); clone.MouseUp += operator_MouseUp; foreach (var kvp in UserDictsContainer.UserDicts) { ToolStripMenuItem item = new ToolStripMenuItem(kvp.Key); item.Click += MenuStripItem_Click; clone.ContextMenuStrip.Items.Add(item); } } else if (clone.Text == "hasusermentioned()" || clone.Text == "byuser()" || clone.Text == "num") { clone.ContextMenuStrip = new ContextMenuStrip(); clone.MouseUp += operator_MouseUp; ToolStripTextBox item = new ToolStripTextBox(); clone.ContextMenuStrip.Items.Add(item); item.TextBox.KeyDown += TextBox_KeyDown; } //cp.Location = this.flowLayoutPanel1.PointToClient(new Point(e.X, e.Y)); ((FlowLayoutPanel)sender).Controls.Add(clone); LastElementChanged?.Invoke(this, null); } }