My Propertgrid Повторяется при каждом щелчке мышью на форме - PullRequest
0 голосов
/ 15 декабря 2011

Когда я щелкаю по любому элементу управления в моей форме или пользовательском контроле, отображается таблица свойств, но она повторяется для каждого элемента управления в форме.Как я могу показать только один раз для каждого элемента управления нажмите

public void Selectpropertygrid()
{            
    foreach (Control c in dock_Control1.Controls)
    {
        c.MouseClick+=new MouseEventHandler(c_MouseClick);
    }
    foreach (Control ctr in this.Controls)
    {
        ctr.MouseClick += new MouseEventHandler(c_MouseClick);
    }
 }

 public void c_MouseClick(object sender, MouseEventArgs e)
 {   
     Control ct=sender as Control;
     prp = new PropertyGrid();
     prp.CommandsVisibleIfAvailable = true;
     prp.Location = new Point(0, 0);
     prp.Size = new Size(220 ,800);      
     prp.Enabled = true;            
     prp.Visible = true;
     prp.Text = "Properties";
     prp.Dock = DockStyle.Left;
     prp.Enabled = true;
     this.Controls.Add(prp);            
     prp.SelectedObject = ct;           
 }

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 15 декабря 2011

Вполне вероятно, что у вас есть несколько подписок на события для обработчика событий c_MouseClick. Желательно, если не желательно, удалять какой-либо обработчик событий перед добавлением желаемого.

Попробуйте изменить свой код на что-то вроде этого и посмотрите, исправлен ли он.

public void Selectpropertygrid()
{            
    foreach (Control c in dock_Control1.Controls)
    {
        c.MouseClick -= c_MouseClick;
        c.MouseClick += c_MouseClick;
    }
    foreach (Control ctr in this.Controls)
    {
        ctr.MouseClick -= c_MouseClick;
        ctr.MouseClick += c_MouseClick;
    }
 }
1 голос
/ 15 декабря 2011

Я не уверен или не уверен в вашем сценарии.Но, насколько я понимаю, для каждого UserControl или Control у вас должно быть событие, прикрепленное к нему.Поэтому в конце события удалите (- =) это событие из элемента управления с помощью параметра «отправитель».попробуйте дать еще немного информации, чтобы я мог четко упомянуть то, что говорю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...