ASP.NET뿐만 아니라 WinForms에서도 사용할 수있는 사용자 정의 그래픽 컨트롤을 개발하고 싶습니다. 컨트롤은 일부 속성 설정 및 관련 규칙에 따라 이미지를 렌더링합니다.WinForms 및 ASP.NET 사용자 정의 컨트롤에 대한 공통 코드
분명히 WinForms 버전의 코드를 ASP.NET 버전으로 복제 할 수는 있지만 오류가 있거나 규칙이 변경된 경우 업데이트 할 버전이 두 가지 있습니다.
나는 속성이 기본 클래스를 가리키는 것입니다 다양한 속성 필요한 규칙과 윈폼 및 ASP.NET 컨트롤 클래스로, 기본 클래스를 작성할 수, 뭔가 같은 :
public class MyControlCore
{
// all properties and control rules
public void PaintTo(Graphics graphics)
{
// rendering of control
}
}
public class MyWinFormsControl: Control
{
public MyWinFormsControl(Control parent): base(parent)
{
CoreControl = new MyControlCore();
}
public MyControlCore CoreControl { get; private set; }
protected override OnPaint(object sender, PaintEventArgs e)
{
CoreControl.PaintTo(e.Graphics);
}
}
이 의지 하지만, 속성 그리드에서 사용자 정의 속성이 들어있는 속성 CoreControl
을 얻을 수 있습니다. 하위 속성이있는 CoreControl
속성 대신 속성 표에 MyControlCore
속성을 표시하는 방법이 있습니까?
TypeDescriptionProvider
및 관련 클래스를 사용하여이 작업을 수행 할 수 있다고 생각했지만 계속 진행할 방법이 확실하지 않으며 나중에 결과를 얻을 수도 있습니다. 나는 이것이 디자이너에게만 도움이된다는 것을 알고 있지만 괜찮습니다.
흥미 롭습니다. 그래서 부분 클래스'MyControl'을 포함하는 파일을 생성 할 것입니다. 그 안에 모든 일반적인 것들이 들어 있습니다. 그리고 나서 WinForms 프로젝트에서 클래스 파일을 만들고 동일한 부분 클래스를 선언하고, System.Windows.Forms에서 파생시킵니다. Control '을 클릭하고 첫 번째 파일을 프로젝트에 연결 한 다음 다른 프로젝트의 ASP.NET 컨트롤에 대해 동일한 작업을 수행합니다. 나는 그것을 정확하게 이해 했는가? – MarcelB
문제의 더 단순하고 세련된 접근 방식이므로 답변을 수락하십시오. 감사. – MarcelB