Mouse down event Working only once in window application ,it should be worked each and every time
My codes are given below please help me...
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using DynamicForm.Resources;
using Infragistics.Win.UltraWinEditors;
namespace DynamicForm
{
public partial class FormDesigner : Form
{
ControlTypes ControlToDraw { get; set; }
List<control> ControlCollections = new List<control>();
public FormDesigner()
{
InitializeComponent();
}
private void btnDrawTextBox_Click(object sender, EventArgs e)
{
ControlToDraw = DynamicForm.ControlTypes.TextField;
}
private void button2_Click(object sender, EventArgs e)
{
ControlToDraw = ControlTypes.ComboBoxField;
}
private void ctrLabel_Click(object sender, EventArgs e)
{
ControlToDraw = DynamicForm.ControlTypes.LabelField;
}
private void ctrlCheckBox_Click(object sender, EventArgs e)
{
ControlToDraw = DynamicForm.ControlTypes.CheckField;
}
private void ctrlOptionBox_Click(object sender, EventArgs e)
{
ControlToDraw = DynamicForm.ControlTypes.OptionField;
}
private void ctrlButton_Click(object sender, EventArgs e)
{
ControlToDraw = DynamicForm.ControlTypes.ButtonField;
}
private void FormDesigner_Click(object sender, EventArgs e)
{
if (this.PointToClient(MousePosition).Y < 130) return;
switch (ControlToDraw)
{
case ControlTypes.None:
break;
case ControlTypes.TextBox:
TextBox textBox = new TextBox();
textBox.Location = this.PointToClient(MousePosition);
textBox.Size = new Size(100, 24);
textBox.MouseDown += DynamicControl_MouseDown;
textBox.MouseUp += DynamicControl_MouseDown;
this.Controls.Add(textBox);
dragControl1.SelectedControl = textBox;
break;
case ControlTypes.TextField:
TextField textField = new TextField();
textField.Location = this.PointToClient(MousePosition);
textField.MouseDown += DynamicControl_MouseDown;
textField.MouseUp += DynamicControl_MouseUp;
this.Controls.Add(textField);
dragControl1.SelectedControl = textField;
if (ControlCollections.Count() == 0)
{
textField.FieldName = "Text Field " + 0;
this.Controls.Add(textField);
dragControl1.SelectedControl = textField;
}
else
{
textField.FieldName = "Text Field " + int.Parse(ControlCollections.Count().ToString());
this.Controls.Add(textField);
dragControl1.SelectedControl = textField;
}
ControlCollections.Add(dragControl1.SelectedControl);
break;
case ControlTypes.ComboBoxField:
ComboBox comboBox = new ComboBox();
comboBox.Location = this.PointToClient(MousePosition);
comboBox.Size = new Size(100, 24);
comboBox.MouseDown += DynamicControl_MouseDown;
comboBox.MouseUp += DynamicControl_MouseDown;
this.Controls.Add(comboBox);
dragControl1.SelectedControl = comboBox;
break;
case ControlTypes.LabelField:
LabelField label = new LabelField();
label.Location = this.PointToClient(MousePosition);
label.MouseDown += DynamicControl_MouseDown;
label.MouseUp += DynamicControl_MouseDown;
this.Controls.Add(label);
dragControl1.SelectedControl = label;
break;
case ControlTypes.CheckField:
CheckField check = new CheckField();
check.Location = this.PointToClient(MousePosition);
check.MouseDown += DynamicControl_MouseDown;
check.MouseUp += DynamicControl_MouseDown;
this.Controls.Add(check);
dragControl1.SelectedControl = check;
break;
case ControlTypes.OptionField:
OptionField option = new OptionField();
option.Location = this.PointToClient(MousePosition);
option.MouseDown += DynamicControl_MouseDown;
option.MouseUp += DynamicControl_MouseDown;
this.Controls.Add(option);
dragControl1.SelectedControl = option;
break;
case ControlTypes.ButtonField:
ButtonField button = new ButtonField();
button.Location = this.PointToClient(MousePosition);
button.MouseDown += DynamicControl_MouseDown;
button.MouseUp += DynamicControl_MouseDown;
this.Controls.Add(button);
dragControl1.SelectedControl = button;
break;
default:
break;
}
ControlToDraw = ControlTypes.None;
dragControl1.DesignMode(true);
}
private void DynamicControl_MouseDown(object sender, EventArgs e)
{
for (int i = 0; i < ControlCollections.Count(); i++)
{
if (ControlCollections[i] == dragControl1.SelectedControl)
{
ControlCollections[i].BackColor = ColorTranslator.FromHtml("#C3C3C3");
}
else
{
ControlCollections[i].BackColor = ColorTranslator.FromHtml("#F0F0F0");
}
}
switch (dragControl1.SelectedControl.GetType().Name)
{
case "TextBox":
TextBox textBox = ((TextBox)dragControl1.SelectedControl);
txtWidth.Text = textBox.Width.ToString();
txtLeft.Text = textBox.Left.ToString();
txtTop.Text = (textBox.Top - 130).ToString();
break;
case "TextField":
TextField textField = ((TextField)dragControl1.SelectedControl);
txtWidth.Text = textField.Width.ToString();
txtLeft.Text = textField.Left.ToString();
txtTop.Text = (textField.Top - 130).ToString();
break;
case "ComboBoxField":
ComboBoxField comboBox = ((ComboBoxField)dragControl1.SelectedControl);
txtWidth.Text = comboBox.Width.ToString();
txtLeft.Text = comboBox.Left.ToString();
txtTop.Text = (comboBox.Top - 130).ToString();
break;
case "LabelField":
LabelField label = ((LabelField)dragControl1.SelectedControl);
txtWidth.Text = label.Width.ToString();
txtLeft.Text = label.Left.ToString();
txtTop.Text = (label.Top - 130).ToString();
break;
case "CheckField":
CheckField check = ((CheckField)dragControl1.SelectedControl);
txtWidth.Text = check.Width.ToString();
txtLeft.Text = check.Left.ToString();
txtTop.Text = (check.Top - 130).ToString();
break;
case "OptionField":
OptionField option = ((OptionField)dragControl1.SelectedControl);
txtWidth.Text = option.Width.ToString();
txtLeft.Text = option.Left.ToString();
txtTop.Text = (option.Top - 130).ToString();
break;
case "ButtonField":
ButtonField button = ((ButtonField)dragControl1.SelectedControl);
txtWidth.Text = button.Width.ToString();
txtLeft.Text = button.Left.ToString();
txtTop.Text = (button.Top - 130).ToString();
break;
default:
break;
}
}
private void DynamicControl_MouseUp(object sender, EventArgs e)
{
FormDesigner zz = new FormDesigner();
int item = zz.Size.Width;
if (dragControl1.SelectedControl != null)
{
if (dragControl1.SelectedControl.Left < 10)
dragControl1.SelectedControl.Left = 10;
if (dragControl1.SelectedControl.Top < 130)
dragControl1.SelectedControl.Top = 140;
if (dragControl1.SelectedControl.Left > item)
dragControl1.SelectedControl.Left = item - 20;
for (int i = 0; i < ControlCollections.Count(); i++)
{
if (ControlCollections[i] == dragControl1.SelectedControl)
{
ControlCollections[i].BackColor = ColorTranslator.FromHtml("#C3C3C3");
}
else
{
ControlCollections[i].BackColor = ColorTranslator.FromHtml("#F0F0F0");
}
}
switch (dragControl1.SelectedControl.GetType().Name)
{
case "TextBox":
TextBox textBox = ((TextBox)dragControl1.SelectedControl);
txtWidth.Text = textBox.Width.ToString();
txtLeft.Text = textBox.Left.ToString();
txtTop.Text = (textBox.Top - 130).ToString();
break;
case "TextField":
TextField textField = ((TextField)dragControl1.SelectedControl);
txtWidth.Text = textField.Width.ToString();
txtLeft.Text = textField.Left.ToString();
txtTop.Text = (textField.Top - 130).ToString();
break;
case "ComboBoxField":
ComboBoxField comboBox = ((ComboBoxField)dragControl1.SelectedControl);
txtWidth.Text = comboBox.Width.ToString();
txtLeft.Text = comboBox.Left.ToString();
txtTop.Text = (comboBox.Top - 130).ToString();
break;
case "LabelField":
LabelField label = ((LabelField)dragControl1.SelectedControl);
txtWidth.Text = label.Width.ToString();
txtLeft.Text = label.Left.ToString();
txtTop.Text = (label.Top - 130).ToString();
break;
case "CheckField":
CheckField check = ((CheckField)dragControl1.SelectedControl);
txtWidth.Text = check.Width.ToString();
txtLeft.Text = check.Left.ToString();
txtTop.Text = (check.Top - 130).ToString();
break;
case "OptionField":
OptionField option = ((OptionField)dragControl1.SelectedControl);
txtWidth.Text = option.Width.ToString();
txtLeft.Text = option.Left.ToString();
txtTop.Text = (option.Top - 130).ToString();
break;
case "ButtonField":
ButtonField button = ((ButtonField)dragControl1.SelectedControl);
txtWidth.Text = button.Width.ToString();
txtLeft.Text = button.Left.ToString();
txtTop.Text = (button.Top - 130).ToString();
break;
default:
break;
}
}
}
private void panel1_MouseEnter(object sender, EventArgs e)
{
dragControl1.DesignMode(false);
}
private void panel1_MouseLeave(object sender, EventArgs e)
{
dragControl1.DesignMode(true);
}
private void button1_Click(object sender, EventArgs e)
{
switch (dragControl1.SelectedControl.GetType().Name)
{
case "TextBox":
TextBox textBox = ((TextBox)dragControl1.SelectedControl);
textBox.Width = Convert.ToInt32(txtWidth.Text);
textBox.Left = Convert.ToInt32(txtLeft.Text);
textBox.Top = Convert.ToInt32(txtTop.Text) + 130;
break;
case "ComboBox":
ComboBox comboBox = ((ComboBox)dragControl1.SelectedControl);
comboBox.Width = Convert.ToInt32(txtWidth.Text);
comboBox.Left = Convert.ToInt32(txtLeft.Text);
comboBox.Top = Convert.ToInt32(txtTop.Text) + 130;
break;
default:
break;
}
}
private void FormDesigner_Load(object sender, EventArgs e)
{
}
private void txtCaption_TextChanged(object sender, EventArgs e)
{
switch (dragControl1.SelectedControl.GetType().Name)
{
case "LabelField":
((LabelField)dragControl1.SelectedControl).FieldTitle = txtCaption.Text;
break;
case "CheckField":
((CheckField)dragControl1.SelectedControl).FieldTitle = txtCaption.Text;
break;
case "ButtonField":
((ButtonField)dragControl1.SelectedControl).FieldTitle = txtCaption.Text;
break;
case "OptionField":
((OptionField)dragControl1.SelectedControl).DisplayText = txtCaption.Text;
break;
default:
break;
}
}
private void txtLeft_TextChanged(object sender, EventArgs e)
{
try
{
dragControl1.SelectedControl.Left = Convert.ToInt32(txtLeft.Text);
}
catch { }
}
private void txtTop_TextChanged(object sender, EventArgs e)
{
try
{
dragControl1.SelectedControl.Top = Convert.ToInt32(txtTop.Text) + 130;
}
catch { }
}
private void txtWidth_TextChanged(object sender, EventArgs e)
{
try
{
dragControl1.SelectedControl.Width = Convert.ToInt32(txtWidth.Text);
}
catch { }
}
private void txtTop_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Up)
txtTop.Text = (Convert.ToInt32(txtTop.Text) + 1).ToString();
if (e.KeyCode == Keys.Down)
{
if (txtTop.Text == "0") return;
txtTop.Text = (Convert.ToInt32(txtTop.Text) - 1).ToString();
}
}
private void txtName_ValueChanged(object sender, EventArgs e)
{
switch (dragControl1.SelectedControl.GetType().Name)
{
case "TextField":
((TextField)dragControl1.SelectedControl).FieldName = txtName.Text;
break;
case "LabelField":
((LabelField)dragControl1.SelectedControl).FieldName = txtName.Text;
break;
case "CheckField":
((CheckField)dragControl1.SelectedControl).FieldName = txtName.Text;
break;
case "OptionField":
((OptionField)dragControl1.SelectedControl).FieldName = txtName.Text;
break;
case "ButtonField":
((ButtonField)dragControl1.SelectedControl).FieldName = txtName.Text;
break;
default:
break;
}
}
public IEnumerable<control> GetAll(Control control, Type type)
{
var controls = control.Controls.Cast<control>();
return controls.SelectMany(ctrl => GetAll(ctrl, type))
.Concat(controls)
.Where(c => c.GetType() == type);
}
public IEnumerable<control> GetAllControls(DragControl control)
{
var controls = control.Controls.Cast<dragcontrol>();
return controls.SelectMany(ctrl => GetAllControls(ctrl)
.Concat(controls));
}
private void button1_Click_1(object sender, EventArgs e)
{
var collect = GetAll(this, dragControl1.SelectedControl.GetType());
foreach (var item in collect)
{
if (dragControl1.SelectedControl == item)
{
this.Controls.Remove(item);
ControlCollections.Remove(item);
}
}
}
#region test
private static void Dragmethod(object sender, MouseEventArgs e, string str)
{
new DragControl(sender, e, str);
}
void textBox_MouseMove(object sender, MouseEventArgs e)
{
Dragmethod(sender, e, "move");
}
void textBox_MouseUp(object sender, MouseEventArgs e)
{
Dragmethod(sender, e, "up");
}
void textBox_MouseDown(object sender, MouseEventArgs e)
{
Dragmethod(sender, e, "down");
}
#endregion test
}
public enum ControlTypes
{
None,
TextBox,
TextField,
ComboBoxField,
LabelField,
CheckField,
OptionField,
ButtonField
}
}