SplitContainer 인 Windows Form이 있습니다. 이 SplitContainer 다른 패널 있습니다.ArgumentException '자식'이이 부모의 자식 컨트롤이 아닙니다.
Panel1는 InputControl
라는 사용자 지정 컨트롤과 Display
라는 TextBox이 포함되어 있습니다. 나는 창문을 통과 할 수 있다면
int inputIndex = parent.Controls.GetChildIndex(InputControl);
int displayIndex = parent.Controls.GetChildIndex(Display);
나는이 코딩하고, 나는 확실하지 않았다 :
현재 표시되는 항목을 확인하려면, 나는 GetChildIndex Method에 서서 부모로 윈도우 폼을 사용 부모로 양식, 그래서 두 개의 인덱스보다 큰 -1 있다고 확인 이후에 중단 점을 넣어 : 첫 번째 정수 inputIndex
에 값이 할당되기 전에, 나는이 함께 ArgumentException을 수상했다,
if ((-1 < inputIndex) && (-1 < displayIndex)) {
그러나 나를 내 노력의 결과 :
'자녀'는이 학부모의 자녀 통제가 아닙니다.
좋아,이 부모의 직접적인 자식 컨트롤이 아닌 것 같습니다.
한편 SplitContainer은 확실히 직접적인 자식 컨트롤입니다. 그렇다면 SplitContainer 컨트롤을 검색해야합니까?
기술적으로 Z- 인덱스를 원하는 컨트롤은 Panel1 컨트롤에 있습니다. 내 코드가이 코드를 못 생겨야 만한다는 것을 의미합니까?
int inputIndex = splitControl1.Panel1.Controls.GetChildIndex(InputControl);
int displayIndex = splitControl1.Panel1.Controls.GetChildIndex(Display);
이 내 두 (2) 컨트롤의 z 인덱스를 받고 매우 도움이되지 않는 방법처럼 보인다.
어떤 컨트롤이 맨 위에 있는지 추적하기 위해 내 자신의 코드를 작성하는 것 외에 다른 방법으로 이동하는 간단한 방법이 있습니까?
컨트롤이 직접 자식 컨트롤이든 부모의 다른 하위 클래스이든 상관없이 모든 컨트롤의 Z- 인덱스를 반환하는 Microsoft 메서드가 필요합니다. 대답은 먼저 이것을 아는 사람에게 주어집니다.
이것이 없으면 재귀 루프를 만들지 않고도 어떻게 쓸 수 있습니까? 기존의 Microsoft 방법이없는 경우 이는 수여 된 답변으로 사용됩니다.
재귀 루프가 필요한 경우 최상의 재귀 루프를 가리키며 가능하면 대답합니다.
당신이 정말로 그것을 짧은하려는 경우도 Control''의 확장 방법으로 추가 할 수 있습니다에게 도움이 될 것입니다 올바른 희망입니다. – Rotem
젠장 마이클. 너는 그렇게 쉽게 보이게했다. 나는 이것에 대해서도 일하는 데 시간을 보냈다. – jp2code