winform怎么判断右键事件从哪个控件上发生的?
我在contextMenuStrip1_Opening事件中用MessageBox.Show((sender as ContextMenuStrip).SourceControl.Name);这个方法提示说 未将对象引用设置到对象的实例。
我在contextMenuStrip1_Opening事件中用MessageBox.Show((sender as ContextMenuStrip).SourceControl.Name);这个方法提示说 未将对象引用设置到对象的实例。
{ [System.Windows.Forms.ContextMenuStrip], Name: contextMenuStrip1, Items: 2}具体绑定到的是什么控件呢?
你贴点代码
l.Name = i.ToString();
l.Size = new Size(50, 20);
l.Text = t.Rows[i]["b_name"].ToString();
l.Location = new Point(100 + i * 110, 100 + i * 20);
l.Parent = pictureBox1;
l.BackColor = Color.Transparent;
l.MouseMove += new MouseEventHandler(p_MouseMove);
l.MouseDown += new MouseEventHandler(p_MouseDown);
void p_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
downPoint = e.Location;
}
if (e.Button == MouseButtons.Right)
{
contextMenuStrip1.Show(Control.MousePosition);
}
}
{
InitializeComponent();
Label lbl = new Label();
lbl.Text = "123";
lbl.Name = "abc";
this.Controls.Add(lbl);
lbl.ContextMenuStrip = this.contextMenuStrip1;
lbl.MouseDown += new MouseEventHandler(p_MouseDown);
}
private void p_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
this.contextMenuStrip1.Items.Clear();
this.contextMenuStrip1.Items.Add(Control.MousePosition.ToString());
}
}
private void contextMenuStrip1_Opening(object sender, CancelEventArgs e)
{
MessageBox.Show((sender as ContextMenuStrip).SourceControl.Name);
}
你的代码改的