2012-04-16 6 views
0

system.windows.forms.form을 상속 한 창 유리 폼을 만든 다음 클래스 라이브러리 프로젝트에 배치했습니다.여러 프로젝트 중에서 상속 가능한 폼 사용

이제 여러 다른 창 양식 프로젝트에서이 양식을 사용하고 싶습니다. 어떻게해야합니까?

클래스 라이브러리에 대한 참조를 만들었지 만 실제로 양식을 가져 오는 방법을 모르겠습니다.

답변

2

그것은 소리.

GlassForm 클래스가 public인지 확인하십시오. 예.

public class GlassForm : System.Windows.Forms.Form 
{ 
} 

지금 당신이 확인한 것으로는 어떤 형태 당신은, GlassForm에서 상속 GlassForm에 폼에서 상속 된 클래스를 변경하려면, public입니다. 예.

public class MyForm : Form 
{ 
} 

public class MyForm : YourClassLibraryNamespace.GlassForm 
{ 
} 

하는 형태는 지금 GlassForm에서 파생되고뿐만 아니라의 WinForm 디자이너와 같은 역할을합니다. 프로젝트에서 호출 방식으로 양식을 사용하기를 원한다면 Bob Horn이 말한 것을 할 수 있습니다.

using YourClassLibraryNamespace; 

public class MyForm : Form 
{ 
    public void ShowGlassFormModal() { 
     using (GlassForm form = new GlassForm()) { 
      form.ShowDialog(); 
     } 
    } 

    public void ShowGlassForm() { 
     new GlassForm().Show(); 
    } 
} 
+0

David 덕분에, 나는 내 모든 것을 usercontrols와 혼동하게 만들었습니다. 바보 나. 한 가지 질문 : 글 상자 같은 컨트롤을 디자이너의 유리 폼에 추가하면 상속 된 폼에 표시되지 않습니다. – Kiwi

+0

다른 클래스에서 파생 된 상위 클래스에 추가하는 것은 부모 클래스에서 파생되는 모든 항목에 영향을줍니다. 따라서 TextBox를 GlassForm에 추가하고 MyForm이 GlassForm에서 파생되면 동일한 텍스트 상자도 갖게됩니다. –

+0

클래스 라이브러리를 사용할 때 나에게는 그럴 것 같지 않습니다. Glassform에 텍스트 상자를 추가하려고하는데 내 MyForm에 텍스트가 표시되지 않습니다. MyForm은 유리 appereance가 있기 때문에 확실히 상속됩니다, 그래서 코드가 작동합니다. 또한 winforms 프로젝트에서 glass 양식을 다시 만들면 상속이 올바르게 작동합니다. 이것은 클래스 라이브러리의 양식을 상속하는 것과 관련이있는 것 같습니다. – Kiwi

2

이미 참조가있는 경우 참조 만 사용하면됩니다. 클래스 파일 폼의 네임 스페이스를 추가

using NamespaceOfWindowsGlassForm; 

그런 다음 양식을 사용 : 당신은 내가 무엇을 말할 수에서 유리 양식에서 파생 프로젝트의 형태를 원하는처럼

WindowsGlassForm form = new WindowsGlassForm(); 
관련 문제