원본
What’s new in Windows Forms runtime in .NET 5.0 (tistory.com)
Windows Forms는 2018 년 후반에 오픈 소스로 .NET Core로 포팅 된 이후로 팀과 외부 기여자 모두 오래된 버그를 수정하고 새로운 기능을 추가했습니다. 이 게시물에서는 .NET 5.0에서 Windows Forms 런타임의 새로운 기능에 대해 설명합니다.
What's new in Windows Forms runtime in .NET 5.0 | .NET Blog (microsoft.com)
Windows controls additions and enhancementsNew TaskDialog control
작업 대화 상자는 정보를 표시하고 사용자로부터 간단한 입력을 받는 데 사용할 수 있는 대화 상자이며, 메시지 상자보다 더 많은 기능이 있습니다. 메시지 상자와 마찬가지로 설정 한 매개 변수와 운영 체제에 의해 출력 형식이 지정됩니다.
ListView enhancements
ListView 컨트롤은 Windows Forms 개발자에게 매우 익숙하지만 축소 가능한 그룹, 그룹 작업, 자막 및 바닥 글과 같이 Windows Vista에 추가 된 여러 기능에 쉽게 액세스 할 수 있는 API가 부족했습니다.
.NET 5.0에서 우리는 API 격차를 줄이고, 이제 Windows Forms의 ListView는 네이티브 Win32 컨트롤 비슷해 졌습니다.
FileDialog enhancement
FileDialog는 새로운 API 인 FileDialog.ClientGuid를 받았습니다. Windows 파일 대화 상자를 사용하면 호출 응용 프로그램이 GUID를 대화 상자의 지속 된 상태와 연결할 수 있습니다. 대화 상자의 상태에는 마지막으로 방문한 폴더, 대화 상자의 위치 및 크기와 같은 요소가 포함될 수 있습니다. 일반적으로이 상태는 실행 파일의 이름을 기반으로 유지됩니다. GUID를 지정하면 응용 프로그램은 동일한 응용 프로그램 (예 : 가져 오기 대화 상자 및 열린 대화 상자) 내에서 서로 다른 버전의 대화 상자에 대해 서로 다른 지속 상태를 가질 수 있습니다.
Performance improvements
Windows Forms는 Win32 API 집합에 의해 관리되는 래퍼로 알려져 있습니다. 따라서 Windows Forms는 관리되지 않는 Windows 구성 요소와 통신하기 위해서는 항상 interop 계층에 크게 의존해 왔습니다. .NET Core 초창기의 최우선 순위는 interop 계층을 최적화하고, 구조체를 blittable로 만들고, 보다 효율적인 "W"-functions를 명시 적으로 선택하고, 가능한 경우 "unsafe"코드를 사용하는 것이 었습니다. 이러한 모든 변화는 우리가 "peanut butter changes"라고 부르는 것입니다. 각 변화는 작으며 거의 관찰 할 수 없다는 점에서 그렇습니다. 그러나 응용 프로그램의 수명 동안 이러한 변화는 상당한 성능 향상을 가져옵니다.
.NET 5.0에서는 기준을 높이고 여러 페인팅 경로를 최적화했습니다. 역사적으로 Windows Forms는 렌더링 작업을 위해 GDI+ (및 일부 GDI)에 의존했습니다. GDI+는 Graphics 개체를 통해 장치 컨텍스트 (모니터 나 프린터와 같은 특정 디스플레이 장치에 대한 정보가 포함 된 구조)를 추상화하므로 GDI보다 사용하기가 더 쉽지만 추가 오버 헤드로 인해 속도가 느립니다. 단색과 브러시를 다루는 여러 상황에서 우리는 GDI를 사용하기로 결정했습니다.
또한 IDeviceContext 인터페이스를 사용하여 숫자 렌더링 관련 API (예 : PaintEventArgs)를 확장했습니다.이 인터페이스는 Windows Forms 개발자가 직접 사용할 수 없지만 GDI+ Graphics 개체를 우회하는 할당을 줄이고 속도를 높일 수 있었습니다. 이러한 최적화를 통해 다시 그리기 경로에서 메모리 소비가 크게 감소했으며 경우에 따라 메모리 할당시 x10의 절약효과를 가지게 되었습니다.
마지막으로, TextRenderer API를 확장하여 ReadOnlySpan<char> 오버로드를 허용했습니다. 텍스트 그리기 및 측정은 매우 일반적인 작업이기 때문입니다. 이렇게하면 새 문자열을 할당 했을 때 훨씬 더 효율적인 텍스트 렌더링이 가능합니다 (다른 입력 분할, 스택 기반 문자 배열 구축 등).
Accessibility improvements and fixes
지난 몇 년 동안 팀은 오늘날의 접근성 요구 사항 및 규정 준수를 충족하기 위해 20 년 된 Windows Forms SDK를 업데이트했습니다.
.NET 5.0에서는 다음을 포함하되 이에 국한되지 않는 많은 개선 사항을 추가했습니다.
또한 특정 접근성 도구에서 UX에 영향을 미치는 몇 가지 문제를 수정했습니다. 예를 들어 AccessibleObject에 액세스 할 때 더 이상 컨트롤의 핸들 생성이 먼저 발생하지 않도록 접근성 구현을 재 작업하여, 예측 가능한 컨트롤 동작을 보장하고 UI에서 예기치 않은 상황의 발생을 방지했습니다.
또한 접근성 도구가 UI를 올바르게 탐색하지 못하거나, 심각한 경우 응용 프로그램 충돌을 방지 할 수 있는 여러 컨트롤 (예 : PropertyGrid 및 MonthCalendar)의 동작을 개선하고 수정했습니다.
Visual Basic support
Visual Basic은 Application Framework와 함께 .NET 5 및 Visual Studio 16.8에서 지원됩니다! Visual Studio 16.8에는 Windows Forms 디자이너가 포함되어 있으므로 Visual Basic을 사용하면 기존 응용 프로그램을 마이그레이션하거나 새 응용 프로그램을 만들 수 있습니다.
더 자세한 사항은 여기를 참고합니다.
Breaking Changes
.NET Framework 및 .NET Core와의 역 호환성을 최대한 유지하려고 노력하지만 항상 가능한 것은 아닙니다. 여기에서 주요 변경 사항 목록을 찾을 수 있습니다.
첫댓글 Windows Forms 은 끝까지 델?꼬 가는군요.. 국내책에서 wpf 책이 하나 있으면 참 좋을텐데... 새롭게 접근하는 학생에겐 런닝커브가 다소 있을거 같아용..
마소는 이제 버리는건 못하죠 실버라이트 버리고 얼마나 욕을 먹었는데요 ㅋ wpf책은 챕터 정리하다가.. 그만 산으로가서..쿨럭..만들기는 해야하는데..흐흐흐 올해는 다른거 해야해서 시간이 될지 모르겠네요..