我的表单上有flowLayoutPanel
。我有一些可以拖放的控件。我需要的是获取控件的索引,该控件位于鼠标位置,例如,如果鼠标位于第一个小部件上,我必须得到0.请告诉我一些方法,我该怎么做。
由于
修改
Frogot上传照片,抱歉
答案 0 :(得分:0)
您需要遍历flowLayoutPanel.Controls集合中的控件以查找鼠标下的控件。然后再次遍历列表以查找有多少控件高于/等于高度并且位于相关控件的左侧。
我认为你不能避免2次迭代,因为集合的顺序与物理位置无关。
答案 1 :(得分:0)
我意识到这是一个已有5年历史的问题,但是由于该问题和答案仍然出现在Google中,因此我不得不提供真正的答案。
FlowLayoutPanel类提供了一个名为GetChildAtPoint的方法,该方法采用客户端相对的位置并返回该位置的控件(如果该位置是相对于FlowLayoutPanel窗口的鼠标位置,则标识光标下的控件)。那么,更糟糕的情况是,您只能通过FlowLayoutPanel的子级进行一次线性搜索迭代来匹配对象(如果实际上,您的目标是获取实际索引而不是查找索引来查找控件;如果找到控件就是您要执行的操作)确实想要,您已经完成了。)
在我的特定应用程序中,在一个控件只能在一系列相关控件中进行拖动的拖放场景中,我需要轻松地跟踪事物。因此,当我填充面板时,我使用了“ Tag”属性将索引填充到控件本身中(实际上,我存储了对我的子控件包装的基类的引用,并在我的基类Property中维护了索引可以在将Tag转换为基类之后进行查询,但是我离题了。该引用使我能够获取有关光标下方窗口的各种信息,除了维护父索引之外,还可以进行适当的显示和/或操作。 >