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