大きなC#アプリケーションを作成するには 重要な点は、コントロールの色をアプリケーションのユーザーが調整できることです。 System.Drawing.SystemColorsをオーバーライドするソリューション(このアプリケーションのコンテキストのみ)があれば、本当に便利です。すべてのコントロールの値を手作業で設定する必要はありません。 誰かが私の問題の解決策を知っていますか?これは簡単ですか? ありがとうC#アプリケーションのワイドカラーマネージメント
答えて
システムのデフォルトを上書きする必要はありませんが、独自の色を定義することができます。バインディングを設定するアプリケーションで
Color NastyColour = Color.FromArgb(1, 2, 3);
1 =レッド 2 =緑 3 =ブルー
ルック。どのようにすべてのコントロールのためにこれを行うかはわかりませんが、単にコントロールツリーを通して再帰するだけで十分です。
残念ながら、あなたのアプリケーションのためだけにWindowsの配色を変更することはできません。
Winformsでは、フォーム上のすべてのコントロールの背景色などを変更することができますが、多くの領域(ボタンやウィンドウタイトルバーの斜め色など)では、おそらく描画に頼る必要があります自分でコントロールする。
各コントロールを継承し、デフォルトの表示プロパティを設定することをお勧めします。これにより、簡単にカスタマイズして再利用できる標準のWinFormsコントロールのライブラリが提供されます。さらに詳しい情報here(VBでは、C#でサンプルが見つかりませんでした)。
私は以下のようなコードを書きました。私はそれが普通ではない任意のコントロールのための特殊な処理を必要とするので、特に満足していないが、それは仕事をした。 Painterのインスタンスを保持し、フォームを作成してフォームを引数として渡すたびに「適用」を呼び出します。それは、すべての子コントロールを再帰し、外観を変更します。
public class Painter
{
Color foreColor;
Color backColor;
Color altBackColor;
Color buttonColor;
Font font;
public Painter(Color foreColor, Color backColor, Color altBackColor, Color buttonColor, Font font)
{
this.foreColor=foreColor;
this.backColor=backColor;
this.altBackColor=altBackColor;
this.buttonColor=buttonColor;
this.font=font;
}
public void Apply(Control c)
{
if(c==null)
return;
c.ForeColor = foreColor;
c.BackColor = (c is Button) ? buttonColor
: backColor;
if (c is DataGridView)
{
var dgv = (DataGridView) c;
dgv.BackgroundColor = BackColor;
dgv.AlternatingRowsDefaultCellStyle.BackColor = altBackColor;
dgv.ColumnHeadersDefaultCellStyle.BackColor = buttonColor;
}
c.Font = font;
foreach(Control child in c.Controls)
Apply(child);
}
}
$ 1000を払い、DevExpressのコピーを入手してください。私たちはフレームワークを使用して大きなアプリケーションを作成しており、スキニング機能は素晴らしいです。
これは最高の答えのようには聞こえませんが、アプリケーション全体のスキニング機能を探している場合は、サードパーティのライブラリが適切かもしれません。
- 1. C#アプリケーションのアプリケーション/フォームデータ?
- 2. C++のWinFormsアプリケーション
- 3. C#アプリケーションのデバッグダンプ
- 4. Cアプリケーションのライブグラフ
- 5. C#アプリケーションのクラスタリングアプローチ
- 6. C++アプリケーションのエンドツーエンドテストフレームワーク
- 7. C#アプリケーションのスクリプトエンジン
- 8. C/C++アプリケーションのAndroid ADB API
- 9. C++ BuilderのVisual C++アプリケーション
- 10. C#|アプリケーション
- 11. C++ /アプリケーション
- 12. 別のC#アプリケーションからのC#アプリケーションの呼び出しメソッド
- 13. ネイティブC++アプリケーションのマニフェスト?
- 14. C#アプリケーションのMatlabプロッティングツール
- 15. C#アプリケーションのルックアンドフィール(テーマ)
- 16. MDIアプリケーションのスタイリングモーダルフォームC#
- 17. C++マルチスレッド・アプリケーションのプロファイリング
- 18. C#WinFormアプリケーションのデバッグ
- 19. C#.NetのWin32アプリケーション
- 20. C#スクリーンショット別のアプリケーション
- 21. winformアプリケーションのthree.js C#
- 22. ASP.Net C#アプリケーションのインストールツール
- 23. C#アプリケーションでのグローバルキーボードキャプチャ
- 24. Image c#アプリケーションのダウンロード
- 25. C#アプリケーションのGnuPGディストリビューション
- 26. QMLアプリケーションとQML/C++アプリケーション
- 27. C#アプリケーションとC++アプリケーション間のmapおよびshared_ptrのシリアル化?
- 28. C#のアプリケーションをC++のDLLにコールバックを介してC#のアプリケーションに戻す
- 29. JavaアプリケーションとC++アプリケーション間の通信
- 30. JavaアプリケーションとC++アプリケーションの統合/通信
System.Drawing.SystemColorsについて言及しているので、これはWPFではなくWinformsと仮定します。 –