Do .NET Le applicazioni Windows Form utilizzano i controlli nativi Win32 equivalenti per i controlli di base come Textbox e Button? WPF non è nativo, ma Windows Form sembra molto nativo. Le animazioni sul controllo Button sembrano esattamente come un pulsante Win32.I moduli Windows .NET di base controllano i controlli nativi di Win32?
risposta
Sì, sono & hellip; con un paio di eccezioni.
Alcune cose in WinForms sono disegnate su misura. Usano il controllo nativo, ma attivano il disegno proprietario e gestiscono internamente alcune logiche di disegno nel codice C#. Il vantaggio di ciò è che consente a cose come i pulsanti di avere una proprietà BackColor
che supporta un colore definito dall'utente invece del colore di sistema standard. Generalmente, questo dovrebbe essere evitato (almeno secondo me) perché non solo l'effetto è brutto, c'è probabilmente una ragione per cui l'utente ha scelto la combinazione di colori che ha fatto. Ma i progettisti grafici spesso pensano di conoscersi meglio degli utenti, quindi l'opzione esiste.
I controlli implementati in questo modo espongono spesso una proprietà FlatStyle
che consente di modificare il modo in cui vengono disegnati (ad esempio, ButtonBase.FlatStyle
). Con FlatStyle.Standard
, .NET Framework esegue il normale disegno del proprietario, anche se non è stata personalizzata nessuna delle proprietà del controllo con impostazioni insolite. Con FlatStyle.System
, il controllo viene eseguito direttamente da Win32 senza alcun disegno proprietario o altre sostituzioni.
È possibile distinguere la differenza sui pulsanti abbastanza facilmente. Se impostato su FlatStyle.System
, l'effetto di passaggio del mouse sui pulsanti si dissolve gradualmente in entrata e in uscita. Se impostato su FlatStyle.Standard
, la luce blu appare improvvisamente e scompare. Chiudi, ma non proprio uguale. Le caselle combinate fanno la stessa cosa (almeno quando la loro proprietà DropDownStyle
è impostata su ComboBoxStyle.DropDownList
).
Si consiglia di impostare tutti i controlli che hanno tale proprietà su FlatStyle.System
a meno che non si richieda assolutamente un comportamento non supportato da questo FlatStyle.
Ci sono un paio di altre eccezioni. Alcuni controlli WinForms non esistono in Win32, quindi non sono supportati dai controlli nativi. Lo DataGridView è un buon esempio di tale controllo.
Infine, i controlli MenuStrip e ContextMenuStrip sono scritti interamente in codice C# e sono disegnati manualmente da WinForms. Non sono supportati in alcun modo dai controlli nativi di Win32. Ecco perché sembrano così orribilmente brutti su Windows Vista e successivi, perché sono bloccati per sempre usando lo stile di Office XP. Sembrava interessante su Windows XP, ma si diffonde come un pollice sulle versioni successive. Cambiare lo stile di rendering da Professional
a System
non aiuta molto.
Invece, è necessario aggiungere le versioni originali di questi controlli, MainMenu e ContextMenu, alla casella degli strumenti. Non sono inclusi di default nelle versioni recenti di Visual Studio, ma sono assolutamente disponibili per l'uso e non vanno da nessuna parte. Ancora una volta, consiglio vivamente di utilizzarli, dato che sono supportati al 100% dai menu nativi di Win32 e quindi sembrano come dovrebbero indipendentemente dalla versione di Windows dell'utente.
- 1. Funzionalità di espansione per i controlli .NET
- 2. Controlli Win32 trasparenti su tutte le versioni di Windows
- 3. Dove trovare Generic.xaml per i controlli WPF nativi?
- 4. Libreria di controlli Windows .NET gratuita?
- 5. Come abilitare i controlli comuni in un'app di Windows
- 6. Come si controllano i servizi Web?
- 7. Come creare e connettere pulsanti/controlli utente personalizzati con linee usando i moduli di Windows
- 8. PhoneGap Android con controlli nativi
- 9. . Net TableLayoutPanel - I controlli di schiarimento sono molto lenti
- 10. Trova i moduli aperti nell'applicazione windows C#
- 11. Come si controllano i cookie utilizzando Chrome?
- 12. I controlli nativi di VideoJS 4 ora sono predefiniti su dispositivi mobili?
- 13. Chi possiede i controlli?
- 14. Barra di scorrimento a scorrimento multiplo per i moduli Windows
- 15. Inserire i controlli dinamici nel mezzo della collezione di controlli
- 16. Dissolvenza di un pannello - Moduli di Windows
- 17. Styling dei controlli video nativi del browser
- 18. È possibile visualizzare i controlli utente di Windows all'interno di IE8
- 19. Come applicare i criteri di gruppo di Windows utilizzando .NET?
- 20. Come si disabilitano i controlli .net Winforms senza modificarne l'aspetto?
- 21. GroupBox contiene controlli, come ottenere i nomi di tali controlli?
- 22. Strumento online per i controlli Cran
- 23. Applicazione Windows Form, come comunicare tra i controlli personalizzati?
- 24. I sottotitoli sono supportati in uno qualsiasi dei controlli video nativi?
- 25. Qual è il modo migliore per eseguire una procedura guidata utilizzando i controlli WPF nativi
- 26. Esiste un orario assoluto di Windows per i timestamp? (.NET)
- 27. Come nascondere i controlli di HTMLEditor?
- 28. Perché i metodi nativi hashCode() e getClass()?
- 29. Dove sono tutti i database revisionati nativi?
- 30. Utilizzare i moduli rails_admin nelle visualizzazioni personalizzate?
+1 interessante. Hai un riferimento per questo? –
@Jay Non proprio, no. La documentazione fornisce alcuni suggerimenti, così come la fonte di riferimento. Ma il miglior riferimento è la mia esperienza. –