Wat is er nieuw in Windows Forms runtime in  .NET 6.0 Preview 5.  

Application-wide default font 

.NET Framework en Windows Forms zijn ontworpen en gebouwd in een compleet andere wereld – toen CRT-monitoren nog grotendeels maximaal 1024 × 768 waren en “Microsoft Sans Serif” het standaardlettertype op Windows was- dan vandaag de dag. Niets is echter in steen gebeiteld, en zelfs fundamentele eigenschappen zoals het standaardlettertype veranderen af en toe. Windows Vista ontving een behoorlijk aantal UI-updates, inclusief het standaardlettertype, dat werd gewijzigd in Segoe UI. Maar dit was niet iets dat kon worden veranderd in .NET Framework, en het bleef Microsoft Sans Serif gebruiken als het standaardlettertype. Fast forward naar 2018 en .NET Core 3.0, waar we eindelijk konden beginnen met het moderniseren van Windows Forms. We veranderden het lettertype in Segoe UI in dotnet/winforms#656 en kwamen er al snel achter dat een groot aantal dingen afhing van deze standaard lettertype-statistieken. De ontwerper was bijvoorbeeld niet langer een echte WYSIWYG, omdat het Visual Studio-proces wordt uitgevoerd onder .NET Framework 4.7.2 en het oude standaardlettertype gebruikt, terwijl een .NET-toepassing tijdens runtime het nieuwe lettertype gebruikt. (Voordat u het vraagt, werken we aan een functie die deze discrepantie oplost.) We kwamen er ook achter dat de verandering van het lettertype het voor sommige klanten moeilijker maakte om hun grote applicaties te migreren met pixel-perfecte lay-outs. Hoewel we migratiestrategieën hadden geleverd, zou het een aanzienlijke onderneming kunnen zijn om die op honderden formulieren en controles toe te passen. Om het gemakkelijker te maken om die pixel-perfecte apps in dotnet/winforms#4911 te migreren, hebben we een nieuwe API aan onze toolkit toegevoegd:  

 

void Application.SetDefaultFont(Font font) 

 

Net als veel andere Application API kan deze API alleen worden gebruikt voordat het eerste venster is gemaakt, wat zich over het algemeen in de Main()-methode van de applicatie bevindt.  

 

class Program 

{ 

    [STAThread] 

    static void Main() 

    { 

        Application.EnableVisualStyles(); 

        Application.SetHighDpiMode(HighDpiMode.PerMonitorV2); 

 

        Application.SetDefaultFont(new Font(new FontFamily(“Microsoft Sans Serif”), 8f)); 

 

        Application.Run(new Form1()); 

    } 

} 

 

Een poging om het standaardlettertype in te stellen nadat het eerste venster is gemaakt, resulteert in een InvalidOperationException.  

 

Even terzijde: het is gemakkelijk om los te gaan met deze API en het standaardlettertype van de toepassing in te stellen op Chiller, 20pt, style=bold,italic,underline‘,maar houd rekening met uw eindgebruikerservaring.  

 

Meer runtime-designers 

 

De Windows Forms SDK bestaat uit twee afzonderlijke delen:  

  1. deruntime, d.w.z. de code die wordt uitgevoerd, open source opdotnet/winforms, en  
  2. de designer, die bestaat uit “algemene ontwerper” (d.w.z. een ontwerper die ontwikkelaars in hun applicatie kunnen insluiten) en “Visual Studio-specifieke” componenten, close source. 

 

In .NET Framework liepen deze twee delen nauw samen, en dat stelde ontwikkelaars in staat om VS-specifieke functionaliteit in hun apps op te roepen en te gebruiken. In .NET Core waren deze twee componenten gesplitst, en nu evolueren ze grotendeels onafhankelijk van elkaar. Met deze splitsing wordt de specifieke functionaliteit van Visual Studio Designer niet openbaar gemaakt omdat het buiten Visual Studio geen zin heeft. Aan de andere kant kan de algemene ontwerperfunctionaliteit ook buiten Visual Studio worden gebruikt en nuttig zijn, en in reactie op de verzoeken van onze klanten in Preview 5 hebben we een aantal API’s geporteerd die het mogelijk moeten maken om een ontwerper voor algemeen gebruik te bouwen (bijv. een rapportontwerper) .  

 

Met dotnet/winforms#4860 zijn de volgende designers nu beschikbaar:    System.ComponentModel.Design.ComponentDesigner System.Windows.Forms.Design.ButtonBaseDesigner System.Windows.Forms.Design.ComboBoxDesigner System.Windows.Forms.Design.ControlDesigner System.Windows.Forms.Design.DocumentDesigner System.Windows.Forms.Design.DocumentDesigner System.Windows.Forms.Design.FormDocumentDesigner System.Windows.Forms.Design.GroupBoxDesigner System.Windows.Forms.Design.LabelDesigner System.Windows.Forms.Design.ListBoxDesigner System.Windows.Forms.Design.ListViewDesigner System.Windows.Forms.Design.MaskedTextBoxDesigner System.Windows.Forms.Design.PanelDesigner System.Windows.Forms.Design.ParentControlDesigner System.Windows.Forms.Design.ParentControlDesigner System.Windows.Forms.Design.PictureBoxDesigner System.Windows.Forms.Design.RadioButtonDesigner System.Windows.Forms.Design.RichTextBoxDesigner System.Windows.Forms.Design.ScrollableControlDesigner System.Windows.Forms.Design.ScrollableControlDesigner System.Windows.Forms.Design.TextBoxBaseDesigner System.Windows.Forms.Design.TextBoxDesigner System.Windows.Forms.Design.ToolStripDesigner System.Windows.Forms.Design.ToolStripDropDownDesigner System.Windows.Forms.Design.ToolStripItemDesigner System.Windows.Forms.Design.ToolStripMenuItemDesigner System.Windows.Forms.Design.TreeViewDesigner System.Windows.Forms.Design.UpDownBaseDesigner System.Windows.Forms.Design.UserControlDocumentDesigner  

 

Als je denkt dat we nog iets missen laat het weten op de GitHub repository 

Dit artikel komt origineel van devblogs Microsoft What’s new in Windows Forms in .NET 6.0 Preview 5 | .NET Blog (microsoft.com)