我的属性网格重复在每个控件上单击呈现到表单
本文关键字:单击 表单 控件 网格 属性 我的 | 更新日期: 2023-09-27 18:18:00
当我点击任何控件在我的表单或用户控件,然后propertygrid显示,但它重复的每个控件上的表单。如何对每个控件只显示一次单击
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;
}
很可能您已经向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;
}
}
我不确定或不清楚你的情况。但据我所知,对于每个UserControl或Control,你必须有一个事件附加到它。因此,在事件结束时,使用'sender'参数从控件中删除(-=)该事件。请尽量提供更多的信息,以便我能清楚地说明我要说的话。
(sender as Control).Click -= event();
希望能有所帮助。