일부 오래된 VB6 코드를 리팩터링 할 때 나는 정말 이상한 행동을 발견했습니다. 컨트롤 배열 요소의 DragMode 속성을 설정하려고하면 배열에서이 컨트롤을 분리하면 컴파일러에서 '메서드 또는 데이터 멤버를 찾을 수 없습니다'라고 알려줍니다.VB6 : 일부 컨트롤 배열 요소 속성을 사용할 수 없습니다.
'myControl'이 텍스트 상자가있는 사용자 정의 컨트롤이 아닌 아래 예제에서 볼 수 있습니다. 그리고 '컨트롤'은 myControls가 포함 된 컨트롤 배열입니다. 첫 번째 루프는 작동하고 두 번째 루프는 작동하지 않습니다.
Dim i As Integer
Dim ctrl As myControl
For i = 0 To 2
myControls(i).DragMode = vbAutomatic
Next i
For Each ctrl In myControls
ctrl.DragMode = vbAutomatic
Next
는 업데이트 : 감사와
내가 각 루프 작업에 대한있어 @wqw합니다. 나를 위해 작동 코드는 지금과 같이 보입니다 :
Dim ctrlExt As VBControlExtender
Dim ctrl As myControl
For Each ctrlExt In myControls
Set ctrl = ctrlExt
ctrlExt.DragMode = vbAutomatic
ctrl.SpecificProperty = "Test"
Next
사용자 컨트롤이있는 경우 설정 Ctrl 키 = ctrlExt'이 실패 할 수 있습니다'조심하십시오 별도의 ActiveX 컨트롤 (OCX) 프로젝트 및/또는 응용 프로그램을 컴파일 할 때. 이 경우에는'Set ctrl = ctrlExt.Object'를 사용해야합니다. – wqw