WinForms ඇතුළට. බහු-වේදිකා ලෙස පිටතට.
Majorsilence.Forms යනු .NET සඳහා වූ බහු-වේදිකා WinForms පුස්තකාලයකි — පැරණි
සහ නවීන WinForms යෙදුම් නවීන තාක්ෂණ තොගයකට (stack) ගෙන යන Windows Forms ගැළපුම්
ස්තරයකි. ඔබ දැනටමත් සතු Form, පාලක (controls), සිදුවීම්
හසුරුවන (event handlers) සහ *.Designer.cs ගොනු එලෙසම තබාගන්න —
එකම build එකකින් Linux මත ධාවනය කරන්න,
macOS මත ධාවනය කරන්න, සහ Windows මත
ධාවනය කරන්න. Avalonia සතු
Android, iOS සහ Browser ඉලක්ක හරහා හෝ
Uno Platform හරහා ජංගම සහ වෙබ්
ද ළඟා විය හැක. ධාරක (host) backend හතක් එකම පාලක ආකෘතියක් බෙදා ගනී — Linux මත GTK 4 කවුළුවක්,
ටර්මිනලයක්, සහ Windows යෙදුමකට වරකට එක් පාලකයක් බැගින් සංක්රමණය වීමට ඉඩ දෙන WinForms සහ WPF
පාලම් ද ඇතුළුව.
සංක්රමණය කෙටි කරන්න, ඔබගේ කේත පදනම නොවේ.
WinForms යෙදුමක් සංක්රමණය කිරීම සාමාන්යයෙන් අදහස් වන්නේ නව UI ආකෘතියකින් — XAML, MVVM, වෙබ් — මුල සිටම නැවත ලිවීමකි. එය මිල අධික, අවදානම් සහිත වන අතර වසර ගණනාවක් තිස්සේ ක්රියා කළ ව්යාපාරික තර්කනය (business logic) සහ UX ඉවත දමයි. Majorsilence.Forms, WinForms API පෘෂ්ඨය අනුකරණය කරන අතර ගැළපුම් ස්තරයක් සපයයි, එබැවින් ඔබ සතු පෝරම, පාලක සහ කේතය ඉතා අඩු වෙනස්කම් සහිතව ගෙන යා හැක.
නැවත භාවිත කරන්න, නැවත නොලියන්න
ඔබ WinForms හි ලියූ එම පාලක ආකෘතියම සහ සිදුවීම් මත පදනම් වූ (event-driven) කේතයම. XAML නැත, බලහත්කාර MVVM නැවත ලිවීමක් නැත, framework එක නැවත ඉගෙන ගැනීමක් නැත.
නිර්මාණයෙන්ම බහු-වේදිකා
සියල්ල SkiaSharp මගින් අඳිනු ලබන අතර මාරු කළ හැකි ධාරක backend එකක් මත ධාවනය වේ — ඩෙස්ක්ටොප් සඳහා පෙරනිමියෙන් Avalonia, ජංගම සහ වෙබ් සඳහා එක් මාර්ගයක් ලෙස එහිම Android/iOS/Browser ඉලක්ක, තවත් මාර්ගයක් ලෙස Uno Platform, සහ Linux මත සැබෑ GTK 4 කවුළුවක්.
වරකට එක් පාලකයක් බැගින් සංක්රමණය කරන්න
Windows-පමණක් වූ WinForms සහ WPF backend, ඔබ දැනටමත් බෙදාහරින යෙදුම තුළම Majorsilence.Forms පාලක ධාරණය කරයි — ToWinFormsControl(), ToWpfElement() — .NET 10 හෝ .NET Framework 4.8 මත. කොටසින් කොටස port කර, පසුව බහු-වේදිකා වීමට backend එක මාරු කරන්න.
CSS මගින් තේමාව සකසන්න
කුඩා, සම්පූර්ණයෙන් ලේඛනගත කළ CSS උප කුලකයක් සෑම වර්ණ සහ අකුරු token එකක්ම සකසන අතර පාලක වර්ගය සහ තත්ත්වය අනුව හැඩගන්වයි. Theme Studio තුළ සජීවීව සංස්කරණය කර, මිශ්ර යෙදුමක සැබෑ WinForms හෝ ස්වදේශීය Avalonia පාලකවලට එම stylesheet එකම යොදන්න.
ඔබට අවශ්ය විට MVVM
Majorsilence.Forms.Mvvm, reflection නොමැතිව INotifyPropertyChanged සහ ICommand පාලකවලට සම්බන්ධ කරයි — trim සහ AOT සඳහා ආරක්ෂිත වන අතර CommunityToolkit.Mvvm සමඟ ද හොඳින් ක්රියා කරයි. කැමති නම් පමණක් භාවිත කරන්න; කිසිවිටෙක අනිවාර්ය නොවේ.
ඇතුළතින් නවීන
GPU-ත්වරිත Skia විදැහුම්කරණය (rendering), HiDPI, ස්පර්ශ ඉඟි (touch gestures), animation frames, වත්මන් .NET — සහ සෑම වේදිකාවකම ආරක්ෂිත ගබඩාව, පෙළ-සිට-කථනය සහ සබැඳි විවෘත කිරීම සඳහා Majorsilence.Forms.Essentials.
පරීක්ෂා කළ හැකි සහ ප්රවේශ විය හැකි
එක් ස්වයංක්රීයකරණ ගසයක් (automation tree) process-තුළ UI පරීක්ෂණ, Selenium සඳහා W3C WebDriver සේවාදායකයක්, AI සහායකයින් සඳහා MCP සේවාදායකයක්, Windows තිර කියවන (screen readers) සහ බ්රවුසරයේ ARIA DOM පිළිබිඹුවක් මෙහෙයවයි.
සෑම තැනකම async සංවාද කවුළු
සෑම modal එකකටම async නිවුන්නෙක් ඇත — ShowDialogAsync, MessageBox.ShowAsync — එබැවින් අවහිර කරන loop එකක් කළ නොහැකි බ්රවුසරයේ සහ දුරකථනවල එම කේතයම ධාවනය වේ. ඇතුළත් analyzer එකක් ඔබ බෙදාහැරීමට පෙර අවහිර කරන ඇමතුම් සලකුණු කරයි.
එක් පාලක ආකෘතියක්, යටින් මාරු කළ හැකි ධාරකයක්.
පාලක සහ විදැහුම්කරණය Majorsilence.Forms සතු වේ; backend එක කරන්නේ තිරය මත පික්සල තැබීම සහ ආදානය
(input) ලබා දීම පමණි. එම සන්ධිය (seam) නිසා එකම යෙදුමට අද Avalonia ද හෙට Uno ද ඉලක්ක කළ හැක —
නැතහොත් ටර්මිනලයක් තුළ කිසිදු වෙනසකින් තොරව ධාවනය කළ හැක. මූලය (core)
net8.0, net10.0 සහ
netstandard2.0 බහු-ඉලක්ක කරයි; WinForms සහ WPF backend
net48 එක් කරන බැවින් .NET Framework 4.8 යෙදුමකට ද එය ධාරණය
කළ හැක.
Program.cs, වෙනසක් නැත.
using Majorsilence.Forms;
public class MainForm : Form
{
}
static void Main (string [] args)
{
Application.Run (new MainForm ());
}
සැබෑ යෙදුම්, සෙල්ලම් demo නොවේ.
repository එකේ ඇති සියලුම නිදසුන් ගවේෂණය කරන්න — Windows Explorer ප්රතිරූපයක්, Outlook ප්රතිරූපයක්, තමන්ගේම API සහ දත්ත සමුදාය සහිත client/server point-of-sale යෙදුමක්, ඩෙස්ක්ටොප්, Uno, GTK 4, බ්රවුසරය, Android, iOS, WPF සහ ටර්මිනලයක් තුළ ධාවනය වන එම සම්පූර්ණ පාලක ගැලරියම, සජීවී CSS Theme Studio එකක්, ද්වි-දිශා WinForms interop, සහ ධාරක Avalonia, Uno, GTK 4 සහ WinForms යෙදුම් තුළ කාවැද්දූ Majorsilence.Forms.
ඔබ මෙහි පැමිණීමට හේතු වූ ප්රශ්නයට පිළිතුර.
බොහෝ දෙනා පැමිණෙන්නේ එක් නිශ්චිත දෙයක් සොයමින් — Windows Forms Linux මත ධාවනය කළ හැකිද, WinForms ගැළපුම් ස්තරයක සැබෑ පිරිවැය කුමක්ද, නැතහොත් මෙය MAUI හෝ Avalonia තුළ නැවත ලිවීමක් සමඟ සැසඳෙන්නේ කෙසේද යන්න. ඒ සෑම එකකටම වෙනම පිටුවක් ඇත.
බහු-වේදිකා WinForms, පැහැදිලි කිරීම
System.Windows.Forms Windows-පමණක් වන්නේ ඇයි, එය මඟහරින ක්රම තුන, සහ API-ගැළපෙන නැවත ක්රියාත්මක කිරීමකදී (reimplementation) අත්හැරෙන දේ.
WinForms Linux මත ධාවනය කළ හැකිද?
එලෙසම නොහැක — Mono හි port එක බොහෝ කලකට පෙර නැවතී ඇති අතර GDI+ එහි නැත. ඒ වෙනුවට Ubuntu, Fedora සහ Debian මත ක්රියා කරන දේ, සහ එය බෙදාහරින ආකාරය.
WinForms macOS මත ධාවනය කළ හැකිද?
Apple Silicon සහ Intel මත ස්වදේශීය NSWindow, එහි Mac වලට අසාමාන්ය ලෙස දැනෙන දේ, සහ .app එකක් ඇසුරුම් කිරීම.
පවතින යෙදුමක් සංක්රමණය කිරීම
majorsilence-migrate CLI යාන්ත්රික නැවත ලිවීම — namespaces, project ගොනු, resources — කියවිය හැකි git diff එකක් ලෙස සිදු කරයි.
WinForms විකල්ප සැසඳීම
MAUI, Avalonia, Uno Platform, Eto.Forms, WPF සහ Wine — ඒ සෑම එකක්ම ඔබ සතු කේතයෙන් කොපමණ ප්රමාණයක් රඳවා ගන්නේද යන්න අනුව මනිනු ලැබේ.
නිතර අසන ප්රශ්න (FAQ)
Designer ගොනු තවමත් ක්රියා කරනවාද? දෘශ්ය designer එකක් තිබේද? VB.NET, DataGridView, System.Drawing සහ නිෂ්පාදනය (production) සඳහා සූදානම ගැන කුමක්ද?
නවතම යාවත්කාලීන
අගෝස්තුවේ සිට පැමිණි දේ: 26.9.0, නව backends හතරක්, CSS තේමා සහ හැසිරීම් විගණනය
සති හතක් සහ commits 557 ක්: GTK 4, Terminal, WinForms සහ WPF ධාරක, .NET Framework 4.8 සහාය, CSS තේමා, mobile සහ browser මත async-පමණක් සංවාද කවුළු, සහ ඔබ ක්රියා කළ යුතු එක් pai...
ලිපිය කියවන්න →Majorsilence.Forms හඳුන්වා දීම
පැරණි සහ නවීන WinForms යෙදුම් නැවත ලිවීමකින් තොරව බහු-වේදිකා (cross-platform) තාක්ෂණ තොගයකට ගෙන යාම සඳහා වූ WinForms-ශෛලියේ UI framework එකක්.
ලිපිය කියවන්න →Platform backends: Avalonia, Uno සහ Headless
Majorsilence.Forms සෑම පාලකයක්ම SkiaSharp සමඟ තනිවම අඳියි — යටින් ඇති windowing toolkit එක ධාරකයක් (host) පමණි. සන්ධිය (seam) ක්රියා කරන ආකාරය මෙන්න.
ලිපිය කියවන්න →