이 문서에서는 .NET 10의 WinForms(Windows Forms)의 새로운 기능을 개략적으로 설명합니다. 자세한 내용은 릴리스 공지 사항을 참조하세요. 릴리스 공지 사항을 사용하여 전체 .NET 10 릴리스에 대한 개요를 확인합니다. 나머지 섹션 섹션에서는 Windows Forms의 가장 중요한 변경 내용 중 일부를 강조 표시합니다.
.NET 10은 2025년 11월에 릴리스되었습니다.
릴리스 공지 사항
각 릴리스 공지 사항은 .NET 10의 Windows Forms 변경 내용에 대한 자세한 정보를 제공합니다.
- .NET 10
- .NET 10 RC2
- .NET 10 RC1
- .NET 10 미리 보기 7
- .NET 10 미리 보기 6
- .NET 10 미리 보기 5
- .NET 10 미리 보기 4
- .NET 10 미리 보기 3
- .NET 10 미리 보기 2
- .NET 10 미리 보기 1
클립보드 변경 사항
Windows Forms는 클립보드 API에 대한 새 코드를 전달합니다. 클립보드는 WPF(Windows Presentation Foundation)와 코드를 공유할 수 있는 방식으로 다시 디자인되었습니다. 이제 두 데스크톱 기술 모두 동일한 코드를 공유하고 클립보드와 상호 작용하는 방식을 통합합니다. 자세한 내용은 .NET 10의 Windows Forms 클립보드 및 DataObject 변경 내용을 참조하세요.
.NET 9에서는 일부 클립보드 작업에 사용되는 BinaryFormatter가 더 이상 지원되지 않습니다. 이러한 클립보드 작업을 수행하려면 호환성 패키지를 옵트인하거나 작업을 수행해야 했습니다. .NET 10은 BinaryFormatter에서의 전환의 고통을 완화하기 위해, 특정 클립보드 메서드를 사용하지 않도록 권고하고 있습니다. 클립보드 데이터를 사용하여 JSON serialization을 지원하여 필요를 회피하기 위해 BinaryFormatter더 많은 메서드가 추가되고 있습니다.
비동기 양식
Windows Forms에는 완전히 통합된 비동기 양식 지원이 있습니다. 또한 이제 비동기 작업에 양식에 대한 약한 참조가 있으므로 여러 창을 관리할 때 응답성이 뛰어난 UI를 사용할 수 있습니다.
.NET 9용 Windows Forms는 폼과 대화 상자를 비동기적으로 표시할 수 있도록 지원하는 새로운 메서드를 도입했습니다. 그러나 이 기능을 사용하려면 컴파일러 오류 WFO5002를 숨겨야 하는 선택적 미리 보기 모드에서 사용되었습니다. 이 컴파일러 오류는 더 이상 .NET 10으로 트리거되지 않습니다.
다음 API는 더 이상 실험적인 것으로 간주되지 않습니다.
사용자 지정 디자이너 개선 사항
UITypeEditor 여러 형식과 ToolStripCollectionEditor 및 DataGridView 컨트롤과 관련된 여러 편집기가 .NET Framework에서 이식되었습니다. 이제 이러한 편집기는 PropertyGrid 및 Windows Forms 디자이너 작업 패널에서 검색할 수 있습니다.
SnapLine은 사용자 지정 디자이너에 대해 수정되었습니다.
다크 모드
Windows Forms에는 완전히 통합된 다크 모드 지원이 있습니다.
.NET 9용 Windows Forms에 도입된 초기 어두운 모드 시각적 스타일은 컴파일러 오류 WFO5001를 억제해야 사용할 수 있는 옵트인 미리 보기 모드였습니다. 이 기능은 .NET 10부터 이 컴파일러 오류 뒤에 더 이상 보호되지 않습니다.
Application.SetColorMode(SystemColorMode) API는 더 이상 실험적인 것으로 간주되지 않습니다.
ControlStyles ApplyThemingImplicitly 사용에 대한 설명
컨트롤은 어둡거나 밝은 애플리케이션에 대해 설정된 색 모드를 따릅니다. 그러나 사용자 고유의 컨트롤을 구성하고 그리는 경우에도 스크롤 막대와 같은 기존 Win32 일반 컨트롤을 사용하는 경우가 있을 수 있습니다. 속성을 읽기 전에 테마를 적용하도록 옵트인하지 않는 한 이러한 컨트롤은 밝은 색으로 CreateParams 유지됩니다. 테마를 이미 따르는 컨트롤을 상속하고 단추와 같이 드로잉을 완전히 제어할 수 있도록 옵트아웃하려는 경우도 있을 수 있습니다.
기본 클래스에서 매개 변수가 읽히기 전에, 사용 사례에 관계없이 Control.CreateParams 속성을 재정의하고 SetStyle(ControlStyles.ApplyThemingImplicitly, true) (옵트인) 또는 SetStyle(ControlStyles.ApplyThemingImplicitly, false) (옵트아웃)을 호출하세요. 생성자에서 이 스타일을 설정할 수 없습니다 . 기본 생성자는 생성자를 호출하기 전에 속성을 읽습니다 CreateParams . 다음 코드 조각은 옵트인하는 방법을 보여줍니다.
public partial class CustomControl1 : Control
{
protected override CreateParams CreateParams
{
get
{
// Set this style BEFORE base.CreateParams is created and returned.
SetStyle(ControlStyles.ApplyThemingImplicitly, true);
CreateParams cp = base.CreateParams;
// Other logic
return cp;
}
}
// Base class constructor is going to read CreateParams property
// before your constructor code runs.
public CustomControl1()
{
// At this point, CreateParams property is already read, you
// can't set ApplyThemingImplicitly here.
InitializeComponent();
}
}
Public Class CustomControl1
Protected Overrides ReadOnly Property CreateParams As CreateParams
Get
' Set this style BEFORE base.CreateParams is created and returned.
SetStyle(ControlStyles.ApplyThemingImplicitly, True)
Dim cp As CreateParams = MyBase.CreateParams
' Other logic
Return cp
End Get
End Property
' Base class constructor is going to read CreateParams property
' before your constructor code runs.
Sub New()
' At this point, CreateParams property is already read, you
' can't set ApplyThemingImplicitly here.
InitializeComponent()
End Sub
End Class
버그 수정
다음은 .NET 10용 Windows Forms에서 수정된 몇 가지 버그입니다.
- 호스팅 대화 상자가 닫힐 때 DataGridView가 편집 모드에 있었다면
InvalidOperationException을 발생시켰을 것입니다. 이로 인해 발생하는 버그가 수정되었습니다. - 인터페이스에서 파생된 것과 관련하여 잘못된 긍정 발견을 줄이기 위해
IComponent이 개선되었습니다. - 잘못된 값을 반환하여 회귀
PrinterSettings.DefaultPageSettings.Color를 수정했습니다. - MSHTML 구성 요소의 메모리 누수 해결
접근성
향상된 NVDA 화면 읽기 프로그램 지원.
코드 정리
사용되지 않는 .NET 런타임 및 불필요한 패키지 참조가 제거되었습니다. 경고를 해결하고 코드 품질을 개선하기 위해 코드 스타일이 정리되었습니다.
스크린 캡처 모드 API
Windows API를 사용하는 화면 캡처 애플리케이션이 양식을 캡처하지 못하도록 하는 새로운 API가 도입되었습니다. 이 기능은 사용자 이름, 사용자 ID 또는 암호와 같은 중요한 정보가 유출되지 않도록 보호하는 데 유용합니다.
Form.ScreenCaptureMode 캡처 동작을 제어하기 위해 다음 값 중 하나로 설정됩니다.
-
Allow-(기본값) 폼을 캡처할 수 있습니다. -
HideContent- 캡처할 때 양식이 검은색으로 표시됩니다. -
HideWindow-캡처할 때 폼을 흐리게 합니다. (Windows 10 20H1 버전 2004 이상이 필요합니다.)
분석기 개선 사항
기존 분석기는 오탐지를 줄이기 위해 조정되었습니다.
새 분석기가 추가되었습니다.
.NET Desktop feedback