현재로서는 업그레이드 할 수없는 .Net 1.1 앱을 변경해야합니다. 앱은 끔찍하게 디자인되었고, 반복적 인 기능, 주석 처리되지 않은 사용되지 않는 코드, 실제로 사용되는 코드와 동일한 표기법을 사용하지 않고 동일한 사용자 컨트롤을 여러 번 반복하여 작성되었습니다. 사용되는 사용자 정의 컨트롤은 사용자 정의 컨트롤이 아닌 컨트롤과 섞여 있지만 Form
중앙에 구현 될 때처럼 복잡합니다.부모 컨트롤을 모르는 상태에서 컨트롤을 찾는 방법 (.Net 1.1)
MainForm
이라고하는 Form
은 TabControl
이며 각 페이지에는 WorkForm
이 있습니다. 이들은 사용자 입력으로부터 동적으로 생성됩니다. WorkForm
은 사용자 정의 컨트롤이며 이전에 언급 한 사용자 정의 컨트롤과 포함/포함되지 않은 컨트롤, 패널 등을 포함합니다. Parentage는로드되는 데이터에 전적으로 기초하여 폼과 컨트롤간에 동적 일 수 있으므로 문제가 복잡해집니다.
네 번째 탭의 WorkForm
사용자 정의 컨트롤의 일부인 사용자 정의 컨트롤의 인스턴스에는 DataGrid가 있으며, 그 컨트롤의 외부 컨트롤을 확인하기 위해 해당 DataGrid의 새 행을 추가하는 코드를 수정하면됩니다. 사용자 컨트롤의 동일한 WorkForm
에 있고 SelectedValue
을 가져옵니다. 본질적으로 필요한 곳은 "Where 's Waldo"가되어야하지만 Control 계층이 보장되지 않는다는 사실에 적응할 수있는 충분한 "Carmen Sandiego"가 있어야합니다. 또한 Demeter의 법칙은 Demeter의 법칙과 비슷합니다. 나는 그녀의 Dename을 알지 못합니다! " 그렇게해서는 안되는 정적 변수에 대한 실제적인 kludgy 호출은 앱 실행 방법과 거의 같습니다. 같은
뭔가 :
Dim row as DataRow = aDataTable.NewRow()
row[12] = Me.Parent.Cousin.TwiceRemoved.OnFathersSide.NotThatOne _
.TheOtherOne.SelectedValue
어떤 것이 관계가 보장되지 않기 때문에,이 컨트롤을 사냥에 대해 갈 수있는 가장 좋은 방법? 추신 나는 그 앱을 쓰지 않았다. 나는이 악몽에 변화를주기위한 지시에 막 붙어있다.
이렇게 복잡한 상황에서이 문제를 해결하는 가장 좋은 방법입니다.하지만 마침내 다른 접근 방식을 취하도록 사다리를 설득 할 수있었습니다. – CDove