【发布时间】:2013-07-23 15:59:03
【问题描述】:
我有一个包含 2 行和 2 列的网格。每个承载 Windows 的单元格形成主机控件。当用户单击任何单元格时,我想捕获选定的单元格。我搜索并发现没有“Click”事件,但我可以使用“MouseDown”事件并获得类似的结果。但是现在我被卡住了,因为您会认为必须有一种更简单的方法,例如“GetCurentRow”和“GetCurrentColumn”来捕获选定的单元格,但没有。
我想要进一步做的是在网格的特定单元格中获取子元素。 我尝试了以下代码,但无论我单击哪个单元格,行和列总是得到 0:
void InnerGridToContainWindowsFormsHost_MouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
var element = (UIElement)e.Source;
int c = Grid.GetColumn(element);
int r = Grid.GetRow(element);
}
有什么方法可以获取选中/点击的单元格详细信息或单元格内的子项?
【问题讨论】:
-
Each cell hosting a windows forms host control- 你的 winform 包含什么? -
每个单元格都包含一个 WindowsFormHost 对象,该对象反过来“托管”一个 ActiveX 控件。我的 WPF 表单包含一个主网格及其子网格,其中一个子网格是另一个包含 4 个 WindowsFormHost 对象的网格。
-
一个空的
Grid单元格就是……空的。如果您要在每个单元格中设置Rectangle并设置其Fill属性,然后单击单元格,您会看到Grid.GetColumn和Grid.GetRow按预期工作。我不确定为什么你的WindowsFormHost对象没有做同样的工作。