在我的 C# Winforms 应用程序中,我有一个 tablelayoutpanel,它将包含从 2 到 64 之间的任何列表框。用户可以双击列表框中的任何项目,然后将项目的信息传输到已经打开的无模式窗口。
我的问题如下:
我如何知道从哪个列表框调用了该事件?
有没有办法确定列表框在 tablelayoutpanel 内的哪一行/列?
我如何知道从哪个列表框调用了该事件?
void ListBox_SomeEvent(object sender, EventArgs e)
{
var lb = (ListBox)sender; // that's the one
}
有没有办法确定列表框在 tablelayoutpanel 内的哪一行/列?
那个我不太确定,因为我在这门课上工作不多。您当然可以ListBox
在其父容器中获得边界矩形,但我看了一眼文档,TableLayoutPanel
并没有看到任何明显的东西(即,类似于Columns
属性的东西)。
我如何知道从哪个列表框调用了该事件?
Ed S. 已经回答了这个问题。也许要提到您需要将事件处理程序附加到您的列表框:
var newListbox = new ListBox();
newListbox.DoubleClick += ListBox_SomeEvent;
_myTableLayouter.Controls.Add(newListBox);
有没有办法确定列表框在 tablelayoutpanel 内的哪一行/列?
使用TableLayoutPanel.GetCellPosition()。您将在此处返回带有行和列的TableLayoutPanelCellPositiontion 。