【问题标题】:if more than one control using the same strip menu , how to determine which called it如果有多个控件使用同一个条形菜单,如何判断是哪个控件调用了它
【发布时间】:2013-09-23 06:28:22
【问题描述】:

我有 24 个控件(图片框)使用相同的条形菜单,在该条形菜单中任何项目的单击事件上,我想知道哪个控件使用了该条形菜单项 比如

private void getInfoToolStripMenuItem_Click(object sender, EventArgs e)
{
    ...
}

如何确定使用此菜单的 24 个控件中的哪个控件 如果不可能,有什么办法可以达到同样的目的吗? (让所有控件共享相同的代码,而无需为 24 个控件编写代码的 24 个菜单)

谢谢,祝你有美好的一天

编辑:为了澄清起见,这里是对问题的重新表述 “一个内部有 24 个图片框的组框,它们都共享相同的条形菜单,我想确定哪个图片框单击了条形菜单项,以便我可以在代码中使用它来执行控件名称的操作(将其与键值对列表匹配) " 这是一张图片

我只想知道哪些图片框点击了getinfo,就是这样

【问题讨论】:

  • 跟踪与 24 个“活动”中的哪个“活动”相关的“选择”属性,并在另一个获得焦点时更改它。让菜单访问成员。
  • 我认为这将是我的最后一个选择,但让我们先看看有没有像样的
  • 详细说明这一点会对您有所帮助:“我有 24 个控件(图片框)使用相同的条形菜单”。这个菜单是怎么知道图片框的(反之亦然)?
  • 当然,我补充一下,也许它更有意义
  • 我看到您将我的问题添加到您的问题中。我实际上是在建议你向我们解释这种关系是如何运作的。但是,如果您不知道它们之间的关系,那么我提出的建议可能是您唯一的选择。您单击的项目不知道您要为其显示信息的事物。因此,您必须单独跟踪它,以便菜单项/工具条项可以知道该做什么。

标签: c# winforms user-interface user-controls controls


【解决方案1】:

经过一些回复后,很明显您希望点击弹出ContextMenuStrip 的控件。您只需使用SourceControl 属性即可获得该控件。

private void getInfoToolStripMenuItem_Click(object sender, EventArgs e) {
  PictureBox pb = contextMenuStrip1.SourceControl as PictureBox;
}

【讨论】:

  • 对不起,发件人是菜单条本身,而 e.clickeditem 是菜单条本身内的项目,而不是表单上的控件
  • @AndrewRober 当然e.ClickedItem 是ToolStrip 上的项目之一,我不明白你的问题。您应该调用菜单条的确切类型名称、ContextMenuStrip、MenuStrip 还是其他名称?
  • 为了澄清起见,这里是对问题的改写“一个包含 24 个图片框的组框,它们都共享相同的条形菜单,我想确定哪个图片框单击了条形菜单项,以便我可以使用它在代码中以控件的名称做某事(与键值对列表匹配)"
  • @AndrewRober 我让你把strip menu的确切类型名称说清楚一点,知道它很重要,例如,我猜它是ContextMenuStrip?
  • 是的,抱歉英语不是我的主要语言,是的,它是 ContextMenuStrip
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-23
  • 1970-01-01
  • 1970-01-01
  • 2011-12-13
  • 1970-01-01
  • 2019-03-17
  • 2012-02-05
相关资源
最近更新 更多