c# 동적으로 생성한 폼 관련 문의 (상속)

안녕하세요
동적으로 폼 생성 관련해서 문의드립니다…

Form을 Edit로 만들게 되면
폼 클래스 뒤에 : (부모폼) 을 붙여서
Base폼으로 부터 상속받는다 라는것을
런타임에게? (런타임에게 알린다는 표현이 맞는지 모르겠네요…)
알려주면 되는데

동적으로 생성한 폼에 대해선 base 폼, 즉 부모폼을 명시해줄려면
어떻게 해야할까요… ex) _dynamicFrm = new Form();

초보적인 질문을 드려서 부끄럽지만 부탁드리겠습니다,

질문내용이 좀 부족한 것 같아서
아래에 추가적인 예시를 들겠습니다

     _dynamicFrm = new Form(); // 동적폼 생성 (자식)
     BaseForm baseForm = new BaseForm(); // 부모폼
     (부모폼은 이미 만들어져있음 정적으로)

     _dynamicFrm.ParentForm.Parent = baseForm; // 이 코드가 동작할진 의문
     위의 코드가 아래의 주석처럼 실행되기를 원함
     // (public partial class _dynamicFrm : BaseForm)


      //InitializeComponent(_dynamicCustFrm); // 동적폼 컨트롤 초기화 메소드

      DialogResult dr = _dynamicFrm.**ShowDialogBaseEx**(this); // 여기서 에러

image

ShowDialogBaseEx() 에러나는 해당 메소드는 BaseForm(부모폼)에서 만든 메소드임
_dynamicFrm 의 자식폼이 BaseForm 을 상속받아서 사용하고 싶은데
동적으로 만들다 보니까 정의가 어렵네요…

방법이 있긴 있을 것 같은데 초보자로선 잘 모르겠네요,

괜한 삽질일까요 그냥 동적으로 만드는거 포기하고 정적으로 만들어서 해야할지
고민되는순간이네요…

2 Likes

인스턴스를 생성할 때 굳이 상위(부모) 클래스를 표현할 필요는 없습니다. 상속 구조는 클래스 선언에 표현합니다.

(글에 표현한 런타임컴파일러 또는 컴파일 시점이라고 표현하면 맞습니다)

2 Likes

혹시 질문내용을 보충했는데 확인가능하시면 부탁드립니다 ㅠㅠ

2 Likes

상속 구조를 인스턴스 생성후에 지정할 수는 없습니다.

목적이 무엇인지 모르겠는데 무엇을 위해 그런 것이 필요한지 부연 설명해주시면 좀 더 도움되는 답변이 가능할 것 같네요.

2 Likes

목적은 edit로 생성해도 되지만 공부차원으로 직접 만들어서 해보자는 취지였습니다… 답변 정말 감사드립니다!!

2 Likes