gpt4 book ai didi

c# - TableLayoutPanel GetControlFromPosition 不会获取不可见的控件。如何访问指定位置的不可见控件?

转载 作者:行者123 更新时间:2023-11-30 14:16:37 24 4
gpt4 key购买 nike

我正在使用 TableLayoutPanel,我想在 TableLayoutPanel 的特定位置获取控件。我想遍历 TableLayoutPanel 的行和列,但是如果我只想在特定的行和列上使用单个控件,这个问题同样适用。
不幸的是,GetControlFromPosition(int column, int row) 仅检索可见的控件(即它们的 Visible 属性设置为 True)。这对我不利,因为有时我想在不可见的特定位置访问控件,然后使其可见。

我不得不求助于遍历 TableLayoutPanel.Controls 集合,然后使用 GetPositionFromControl(Control control)GetCellPosition 获取每个控件的位置(控制控制)直到找到我想要的位置。
(我不确定 GetPositionFromControlGetCellPosition 方法之间的区别,因为 MS 文档很少,但是 I'll ask that question separately)。

有没有更简单或更简洁的方法来执行此操作?

最佳答案

我能想到的最好办法就是创建一个扩展方法。创建一个名为“Extensions.vb”的新模块并添加:

Imports System.Runtime.CompilerServices

Public Module Extensions

<Extension()>
Public Function GetAnyControlAt(Panel As TableLayoutPanel, Column As Integer, Row As Integer) As Control
For Each PanelControl As Control In Panel.Controls
With Panel.GetCellPosition(PanelControl)
If Column = .Column AndAlso Row = .Row Then Return PanelControl
End With
Next
Return Nothing
End Function
End Module

现在您可以使用以下方法访问该方法:

Dim MyControl As Control = TableLayoutPanel1.GetAnyControlAt(Column, Row)

扩展方法将方法添加到列为第一个参数的类中,在本例中为 Panel As TableLayoutPanel,并随机排列其余参数。

关于c# - TableLayoutPanel GetControlFromPosition 不会获取不可见的控件。如何访问指定位置的不可见控件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7142138/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com