Click here to Skip to main content
15,886,110 members
Please Sign up or sign in to vote.
1.00/5 (1 vote)
See more:
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...

C#
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;

                    //test
                    //UltraTextEditor xx = (UltraTextEditor)textField.Controls[0];                   
                    //xx.MouseDown += textBox_MouseDown;
                    //xx.MouseUp += textBox_MouseUp;
                    //testend

                    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.Size = new Size(100, 24);
                    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.Size = new Size(100, 24);
                    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.Size = new Size(100, 24);
                    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.Size = new Size(100, 24);
                    button.MouseDown += DynamicControl_MouseDown;
                    button.MouseUp += DynamicControl_MouseDown;
                    this.Controls.Add(button);
                    dragControl1.SelectedControl = button;
                    break;


                default:
                    break;
            }
            ControlToDraw = ControlTypes.None;
            dragControl1.DesignMode(true);
        }

C#
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;
    }
}

C#
       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;
                //if (dragControl1.SelectedControl.Right >800)
                //    dragControl1.SelectedControl.Right = 600;


                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)
        {
            //Dragmethod(sender, e, "down");
            //textBox.MouseDown += new MouseEventHandler(textBox_MouseDown);
            //this.Controls.Contains(textBox);
        }

        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");
            //((UltraTextEditor)(sender)).MouseDown += textBox_MouseDown;
        }  

        #endregion test
    }

    public enum ControlTypes
    {
        None,
        TextBox,
        TextField,
        ComboBoxField,
        LabelField,
        CheckField,
        OptionField,
        ButtonField
    }
}
Posted
Updated 19-Aug-13 5:17am
v4
Comments
giri001 19-Aug-13 4:16am    
Hi ,can u paste your code here?it will help us alot to understand your problem.
Thanks
-jmd
Joezer BH 19-Aug-13 4:38am    
I agree, it should work every time!
[no name] 19-Aug-13 11:27am    
No one is going to debug your code for you.

1 solution

Insetad looping through the collection, use sender object.

C#
Control ctr = (control)sender;
ctr.BackColor = ...


For further information see these:
Handling and Raising Events[^]
HOW TO: Determine the Sender of an Event Without Using the Control.Name Property[^]
Control.BackColor Property[^]
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900