.NET Windowsフォームアプリケーションでは、テキストボックスやボタンなどの基本的なコントロールに、同等のネイティブWin32コントロールを使用しますか? WPFはネイティブではありませんが、Windowsフォームは非常にネイティブであると感じます。 Buttonコントロールのアニメーションは、Win32ボタンのように見えます。基本的な.NET WindowsフォームはネイティブのWin32コントロールを制御しますか?
答えて
はい、これらは&hellipで、いくつかの例外があります。
WinFormsの中には、カスタム描画されるものがあります。彼らはネイティブコントロールを使用しますが、オーナー描画をオンにし、C#コードで内部的に描画ロジックの一部を処理します。これの利点は、ボタンのようなものがBackColor
プロパティを持っていて、標準のシステムカラーの代わりにユーザー定義のカラーをサポートできることです。一般に、これは避けてください(少なくとも私の意見では)効果が醜いだけでなく、おそらくユーザが彼らが行った配色を選択した理由があるからです。しかし、グラフィックデザイナーは、ユーザーよりもよく知っていると思うことが多いため、オプションが存在します。
このように実装されたコントロールには、描画方法を変更できるようにするFlatStyle
プロパティが頻繁に表示されます(たとえば、ButtonBase.FlatStyle
)。 FlatStyle.Standard
を使用すると、.NET Frameworkは、通常とは異なる設定でコントロールのプロパティをカスタマイズしていなくても、通常のオーナー描画を行います。 FlatStyle.System
を使用すると、コントロールはオーナー描画やその他のオーバーライドなしにWin32によって直接レンダリングされます。
ボタンの違いをわかりやすくすることができます。 FlatStyle.System
に設定すると、ボタンの青いホバー効果が次第にフェードイン/フェードアウトします。 FlatStyle.Standard
に設定すると、青色の輝きが突然現れ、消えます。閉じるが、全く同じではない。コンボボックスは、少なくともDropDownStyle
プロパティがComboBoxStyle.DropDownList
に設定されているときは同じことをします。
このFlatStyleでサポートされていない動作を絶対に必要としない限り、このようなプロパティを持つすべてのコントロールをFlatStyle.System
に設定することをお勧めします。
他にもいくつかの例外があります。一部のWinFormsコントロールはWin32には存在しないため、ネイティブコントロールによってサポートされていません。 DataGridViewはそのようなコントロールの良い例です。
最後に、MenuStripとContextMenuStripのコントロールは、完全にC#コードで記述され、WinFormsによって手動で描画されます。それらはネイティブのWin32コントロールによって決してバックアップされません。これは、Windows Vista以降ではひどく醜いので、Office XPスタイルを使用して永遠に邪魔されているためです。それはWindows XP上で見た目は冷静でしたが、後のバージョンでは痛感しました。レンダリングスタイルをProfessional
からSystem
に変更することはあまり役に立ちません。
代わりに、これらのコントロールの元のバージョンMainMenuとContextMenuをツールボックスに追加する必要があります。最近のバージョンのVisual Studioにはデフォルトでは含まれていませんが、そのまま使用でき、どこにも行きません。ここでも、これらは、ネイティブのWin32メニューで100%サポートされているため、ユーザーのWindowsバージョンに関係なく表示する必要があるため、これらを使用することを強くお勧めします。
- 1. JavaScriptでの基本的なフロー制御
- 2. WPFコントロールのネイティブWin32ウィンドウ
- 3. AHKの基本的なアプリケーション - メインループとフロー制御
- 4. 注入DLLからWin32プロセスを制御する(VC++。NET 2010)
- 5. C++ネイティブWin32シンプル編集コントロール
- 6. 基本的なデータバインディング(Xamarinフォーム)
- 7. 基本的にはWindowsの
- 8. WebBrowserコントロールの基本的な認証タイトル
- 9. .Netコアの基本的な問題
- 10. (.net)設定の基本的な質問
- 11. フォームによる透過的な制御
- 12. フォームの値は制御を提出します
- 13. 現在のWindowsバージョンではWin32 APIはまだ「ネイティブ」ですか?
- 14. .netソケット基本的な解説
- 15. フォームからのアクセス制御
- 16. Win32非同期ソケットの基本的な質問
- 17. 基本的なASP.NETフォームのセキュリティプラクティスは何ですか?
- 18. WPFで.NET 2.0(Windowsフォーム)コントロールを使用する際の制限はありますか?
- 19. Vibe.d基本的なフォーム検証
- 20. 基本的なTCP接続
- 21. 基本的なスレッド
- 22. .NetのWindowsサービスを制御する際の問題
- 23. WIndowsファイルアクセス制御
- 24. asp.netコントロールの基本
- 25. .NETのWM Player ActiveXコンポーネントに対する透過的な制御
- 26. Win32 API:基本的なウィンドウコントロールのちらつきを避けるには?
- 27. ASP NET MVC Serverの基本的なAjaxリクエストへの応答
- 28. C#.NETからWin32ネイティブDLLファイルを読み込めません
- 29. WindowsホストからのWindows VMの制御
- 30. PHPまたはWeb UIのWindowsオーディオボリュームを制御する
+1興味深い。これについての参考資料がありますか? –
@Jayそうではありません。リファレンスソースを見ているように、ドキュメントにはいくつかのヒントがあります。しかし、最高の参考資料は私の経験です。 –