Кіріспе

Графикалық пайдаланушы интерфейсі бағдарламалық кітапханасы

Windows Forms (WinForms) – Microsoft .NET, .NET Framework немесе Mono құрамына кіретін тегін және ашық кодты графикалық (GUI) сыныптар кітапханасы. Ол үстел, ноутбук және планшет компьютерлері үшін клиенттік бағдарламаларды жазуға арналған платформаны ұсынады. Бұл кітапхана C++ негізіндегі бұрынғы және күрделі Microsoft Foundation Class Library-нің орнын алмастыру ретінде қарастырылса да, одан салыстырмалы парадигманы ұсынбайды және көп деңгейлі шешімдерде тек пайдаланушы интерфейсі деңгейі үшін платформа болып табылады. 2018 жылдың 4 желтоқсанында Microsoft Connect шарасында Microsoft, Windows Forms-ты GitHub-та ашық бастапқы кодты жоба ретінде жариялады. Ол MIT лицензиясымен шығарылды. Бұл жаңалықпен Windows Forms, .NET Core фреймворкіне бағытталған жобалар үшін қолжетімді болды. Дегенмен, бұл фреймворк әлі де тек Windows платформасында ғана қолжетімді, ал Mono-ның Windows Forms-ты толық іске асырмауы платформааралық іске асырудың жалғыз нұсқасы болып қала береді.

Сәулет

Windows Forms бағдарламасы – Microsoft-тың .NET Framework-імен қолдау көрсетілетін оқиғаға негізделген қосымша. Баталық бағдарламадан өзгешелігі, ол уақытының көп бөлігін пайдаланушы бір нәрсе жасауын күтіп отырады, мысалы, мәтіндік өріс толтыру немесе батырманы басу. Қолданба коды C# немесе Visual Basic сияқты .NET бағдарламалау тілінде жазылуы мүмкін. Windows Forms қолданыстағы Windows API-ді басқарылатын кодқа орап, Windows пайдаланушы интерфейсінің стандартты басқару элементтеріне қолжетімділік береді. Windows Forms көмегімен .NET Framework, Visual Basic немесе MFC-ге қарағанда Win32 API-ден жоғары деңгейде абстракция ұсынады. Windows Forms клиенттік қосымшаларды жасауда Microsoft Foundation Class (MFC) кітапханасына ұқсас. Ол Windows қосымшаларын жасау үшін C++ кластары жиынтығынан тұратын орама ұсынады. Дегенмен, ол MFC сияқты әдепкі қолданба құрылымын қамтамасыз етпейді. Windows Forms бағдарламасындағы әрбір басқару элементі – кластың нақты мысалы.

Ерекшеліктері

Windows Forms сыныптар кітапханасындағы барлық визуальды элементтер Control класынан туындайды. Бұл пайдаланушы интерфейсі элементтерінің минималды функционалдығын қамтамасыз етеді, мысалы, орналасу, өлшем, түс, қаріп, мәтін, сондай-ақ, басу және сүйреп тастау сияқты жалпы оқиғалар. Control класы басқару элементінің аталық класының астында орналасуын өзгертуге мүмкіндік беретін сүйемелдеуді де қамтиды. Control класындағы Microsoft Active Accessibility қолдауы мүмкіндігі шектеулі пайдаланушыларға Windows Forms-ты тиімдірек пайдалануға көмектеседі. Visual Studio-да формалар сүйреп тастау арқылы жасалады. Басқару элементтерін (мысалы, мәтіндік өрістер, батырмалар және т.б.) формаға (терезеге) орналастыру үшін арнайы құрал қолданылады. Басқару элементтерінің атрибуттары мен олармен байланысты оқиғаларды басқарушылары болады. Басқару элементі құрылған кезде әдепкі мәндер беріледі, бірақ оларды бағдарламашы өзгерте алады. Көптеген атрибут мәндерін пайдаланушының әрекеттеріне немесе ортаның өзгеруіне байланысты орындау кезінде өзгертуге болады, бұл динамикалық қолданбаны қамтамасыз етеді. Мысалы, форманың өлшемін өзгерту оқиғасының басқарушысына кодты енгізуге болады, ол басқару элементін қайта орналастырып, оны форманың ортасында ұстайды, форманы толтыру үшін кеңейтеді және т.б. Мәтіндік өрісқа перне басу оқиғасының басқарушысына кодты енгізу арқылы бағдарлама енгізілген мәтіннің регистрін автоматты түрде өзгерте алады немесе тіпті кейбір таңбалардың енгізілуін тоқтата алады. Батырма, мәтіндік өріс, тізім және көрініс сияқты Windows-тың түпкілікті басқару элементтеріне қол жеткізуді қамтамасыз етуден басқа, Windows Forms ActiveX хостингі, макетты реттеу, деректерді тексеру және бай дерек байланысы үшін өзіндік басқару элементтерін қосты. Бұл басқару элементтері GDI+ арқылы көрсетіледі. Кейбір әдістер Win32 кері шақыруларына тікелей қол жеткізуге мүмкіндік береді, олар Windows емес платформаларда қол жетімді емес. NET Framework 3.0 нұсқасымен бірге Microsoft DirectX негізінде GUI-ды көрсету үшін екінші, параллель API-ды шығарды: Windows Presentation Foundation (WPF), XAML деп аталатын GUI декларативтік тілімен бірге. Build 2014 конференциясында өткен сұрақ-жауап сессиясында Microsoft Windows Forms техникалық қолдау режимінде екенін, жаңа мүмкіндіктер қосылмайтынын, бірақ табылған қателер түзетілетінін түсіндірді. Соңғы кезде әртүрлі Windows Forms басқару элементтері үшін жоғары DPI қолдауы NET Framework 4.5 нұсқасына жаңартуларда енгізілді.

Windows Forms-пен XAML-тің кері үйлесімділігі

Болашақ даму үшін Microsoft Windows Forms-ты WPF және UWP сияқты аяқтарды (frameworks) қолдана отырып, XAML негізделген графикалық интерфейспен (GUI) алмастырды. Дегенмен, GUI компоненттерін Windows Forms-тағыдай сүйреп-тастау мүмкіндігі XAML-де Page/Window-дың түбірлік XAML элементін "Canvas" UI Control-мен алмастыру арқылы сақталды. Осы өзгерісті жасағанда, пайдаланушы Visual Studio графикалық интерфейсін пайдаланып, компоненттерді тікелей сүйреп-тастау арқылы Windows Forms-тағыдай терезелерді құра алады. XAML Canvas Control арқылы сүйреп-тастау мүмкіндігін артқа қарай үйлесімділікпен қамтамасыз етеді. Алайда, XAML Controls Windows Forms Controls-қа ұқсас болғанымен, толыққанды артқа қарай үйлесімді емес. Олар бірдей функцияларды орындайды және сыртқы түрі ұқсас, бірақ қасиеттері мен әдістері бір API-ден екіншісіне қайта бейімдеуді қажет ететіндей ерекшеленеді.

Баламалы іске асыру

Mono – Xamarin (бұрын Ximian, содан кейін Novell) бастаған, Ecma стандартына сәйкес келетін және NET Framework-пен үйлесімді құралдар жиынтығын құру жобасы. 2011 жылы Mono-ның System.Windows.Forms қолдауы NET 2.0 нұсқасы бойынша толыққанды деп жарияланды; System.Windows.Forms 2.0 Mac OS X жүйесінде тікелей жұмыс істейді. Дегенмен, System.Windows.Forms Mono-да белсенді түрде дамытылған жоқ. NET-пен толық үйлесімділікке қол жеткізу мүмкін болмады, себебі Microsoft-тың System.Windows Forms негізінен Windows API-дің орауышы болып табылады, ал кейбір әдістері Windows-тан басқа платформаларда қолжетімсіз Win32 кері шақыруларына тікелей қол жеткізуге мүмкіндік береді. Mono 64-бит платформаны дефолтты ретінде қабылдау үшін жаңартылды. Алайда, Macintosh OS X платформасы үшін Mono-дағы System.Windows.Forms 32-бит Carbon жүйесі арқылы құрылған. Бүгінгі күнге дейін Mac OS X жүйесінде пайдалануға арналған System.Windows.Forms-тың 64-бит нұсқасы қолжетімді емес, тек 32-бит платформаға арналған NET қолданбаларын іске қосуға болады.