gpt4 book ai didi

c# - ArgumentException 'child' 不是此父控件的子控件

转载 作者:太空宇宙 更新时间:2023-11-03 21:46:08 24 4
gpt4 key购买 nike

我有一个带有 SplitContainer 的 Windows 窗体.在这个SplitContainer是其他面板。

Panel1包含一个名为 InputControl 的自定义控件和一个 TextBox称为 Display

为了找出当前显示的项目,我转向了 GetChildIndex Method并使用 Windows 窗体作为父级:

int inputIndex = parent.Controls.GetChildIndex(InputControl);
int displayIndex = parent.Controls.GetChildIndex(Display);

当我编写这个代码时,我不确定我是否可以将 Windows 窗体作为父窗体传入,所以我在之后放置了一个断点来检查两个索引是否大于 -1:

      if ((-1 < inputIndex) && (-1 < displayIndex)) {

但是,在第一个整数 inputIndex 被赋值之前,我被授予了 ArgumentException为我的努力传递这条信息:

'child' is not a child control of this parent.

好的,我想这些不是该父项的直接子控件。

SplitContainer ,另一方面,当然是直接的子控件。那么,我应该搜索 SplitContainer 吗?控制?

从技术上讲,我想要 z-index 的控件在 Panel1 中控制,虽然。这是否意味着我的代码必须看起来如此丑陋?

int inputIndex = splitControl1.Panel1.Controls.GetChildIndex(InputControl);
int displayIndex = splitControl1.Panel1.Controls.GetChildIndex(Display);

这似乎是为我的两 (2) 个控件获取 z 索引的一种非常无用的方法。

除了我自己编写代码来跟踪哪个控件在顶部之外,是否有更简单的方法来解决这个问题?

我想要一些返回任何控件的 z-index 的 Microsoft 方法,无论该控件是直接子控件还是父控件的某种其他后代。答案首先授予知道这一点的人。

如果那不存在,我将如何在不必创建递归循环的情况下编写一个?在没有现有 Microsoft 方法的情况下,这将作为奖励答案。

如果需要递归循环,请指出(并可能回答)最佳递归循环。

最佳答案

这个怎么样?

var inputIndex = InputControl.Parent.Controls.GetChildIndex(InputControl);
var displayIndex = Display.Parent.Controls.GetChildIndex(Display);

关于c# - ArgumentException 'child' 不是此父控件的子控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16966731/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com