【问题标题】:distinguish between panel in mouse click区分鼠标单击中的面板
【发布时间】:2013-06-25 18:41:35
【问题描述】:

如果在一个表单中,我有 10 个面板按从 1 到 10 的顺序命名,并且所有面板都注册了相同的事件 myPanel_Click

private void myPanel_Click(object sender, EventArgs e)
{

}

我可以在这 10 个面板中检索我单击的面板的名称吗?

int panelClicked;
private void myPanel_Click(object sender, EventArgs e)
{
    //not a single clue
}

【问题讨论】:

标签: c# winforms panel


【解决方案1】:

如果我理解正确,您应该可以将 sender 转换为面板,然后获取 name 属性。

private void myPanel_Click(object sender, EventArgs e)
{
    Panel target = sender as Panel;
    if(target != null)
        MessageBox.Show(target.Name);
}

【讨论】:

  • @Fabian Bigler,当你自己调用方法时,或者有时在数据绑定期间
【解决方案2】:
private void myPanel_Click(object sender, EventArgs e)
{
    MessageBox.Show((Panel)sender.Name);
}

【讨论】:

    【解决方案3】:

    您也可以使用Tag Property 来引用您的面板,方法是将您的面板编号分配给相应的标签。

    private void myPanel_Click(object sender, EventArgs e)
    {
       Panel p = (Panel)sender;
       switch ((int)p.Tag )
       {
           case 1:
               // Your Code for Panel 1
               break;
           case 2:
               // Your Code for Panel 2 
               break;
           // Your other Panels here
           default:
               break;
       }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多