1

在我的 C# Winforms 应用程序中,我有一个 tablelayoutpanel,它将包含从 2 到 64 之间的任何列表框。用户可以双击列表框中的任何项目,然后将项目的信息传输到已经打开的无模式窗口。

我的问题如下:

  1. 我如何知道从哪个列表框调用了该事件?

  2. 有没有办法确定列表框在 tablelayoutpanel 内的哪一行/列?

4

2 回答 2

3

我如何知道从哪个列表框调用了该事件?

void ListBox_SomeEvent(object sender, EventArgs e)
{
    var lb = (ListBox)sender;  // that's the one
}

有没有办法确定列表框在 tablelayoutpanel 内的哪一行/列?

那个我不太确定,因为我在这门课上工作不多。您当然可以ListBox在其父容器中获得边界矩形,但我看了一眼文档,TableLayoutPanel并没有看到任何明显的东西(即,类似于Columns属性的东西)。

于 2012-09-03T06:30:45.943 回答
2

我如何知道从哪个列表框调用了该事件?

Ed S. 已经回答了这个问题。也许要提到您需要将事件处理程序附加到您的列表框:

var newListbox = new ListBox();
newListbox.DoubleClick += ListBox_SomeEvent;
_myTableLayouter.Controls.Add(newListBox);

有没有办法确定列表框在 tablelayoutpanel 内的哪一行/列?

使用TableLayoutPanel.GetCellPosition()。您将在此处返回带有行和列的TableLayoutPanelCellPositiontion 。

于 2012-09-03T06:45:23.007 回答