如何知道哪个表单控件存在

本文关键字:控件 存在 表单 何知道 | 更新日期: 2023-09-27 17:58:19

我已经构建了2个自定义控件。控制A和控制B

这些控件以1种以上的形式放置。

设来自A和形式B的

现在假设用户单击窗体A中的控件A,然后调用此控件单击事件。

现在如何识别控件A位于表格A中。

这样我就可以更改表格A的控件B的特定属性。

如何知道哪个表单控件存在

您可以递归地使用Control.Parent。如果没有嵌套表单,也可以使用Control.TopLevelControl。然后,您需要递归地遍历Controls属性来找到您的第二个控件。

但更合适的任务解决方案是在第一个控件中创建一个属性,并将其设置为第二个控件,然后在事件处理程序中使用它。

在每个表单中处理控件A的事件。。

您使用的C#版本是什么?如果你使用的是一个相对较新的版本,并且使用的是Windows Presentation Foundation(WPF),你可以这样做:

private void ControlA_MouseDown(object sender, MouseButtonEventArgs e)
{
    ((Grid)((ControlA)sender).Parent).Children
    // The above line is INCOMPLETE, you need to select the right child, but
    // you're at least in the right grid; The rest is up to you (depends on
    // the setup of your program);
}

你可以使用另一个"破解"选项,这是迄今为止最简单的。您可以使用控件的"标记"属性来存储您喜欢的任何内容,例如指向ControlB的指针。

ControlA a = new ControlA();
ControlB b = new ControlB();
a.Tag = b;

注意这是一个破解,正确的方法是自己在自定义控件上创建这样的字段/变量。这或多或少是一个如何运作的演示。

如果您的表单不是动态创建的,那么Akram Shahda的答案只是一个选项,因为从那时起,您可以预定义所有操作。尽管如此,我不会走那条路

相关文章: