C# コントロールに新しいスキンを作成する方法はありますか?
たとえば、デフォルトのリストビューと同じ機能を持ちながら、外観がまったく異なるリストビューが必要です。
ありがとう :)
5 に答える
ライブラリによって異なります。
Win Forms: 退屈で本当に難しい。1 つのコントロールのスタイリングが終了すると、髪の毛がなくなります。
Wpf: Wpf はまさにそのために構築されています (そしてもちろん、他の多くの素晴らしいことも)。このページは大いに役立つかもしれません。
アプリケーションを完全にスキン化する場合は、WPF を学習して使用することをお勧めします。私もそうでしたが、カスタマイズ性だけでなく、一般的にすべてが素晴らしいです. これは優れたプラットフォームですが、DirectX とより多くのリソースが必要なため、移植性が高くありません。
それでも、Windows.Forms を使用していて、コントロールの外観を変更したい場合は、少し難しくなります。
コントロールから派生クラスを作成し、OnPaint および OnPaintBackground イベントをオーバーライドして、独自のコードを実装する必要があります。
私は前にこのルートをたどりました、そしてそれはきれいではありません。結局、私はコントロールのスキンを変更しませんでした。WinFormsツリービューに問題がありました。それはまた別の話です。
WinFormsでは、はい、編集するコントロールの派生バージョンを作成します。そして、OnPaintと関連するPaintメソッドを完全に理解します。ツリービューの場合、これは悪夢だったので、最終的には実行しませんでした。コントロールを最初から描画した経験がない限り、このオプションは検討しません。
WPFを使用している場合、コントロールはすべて視覚的な要素で構成されており、変更もはるかに簡単です。WPFにはコントロールが少なく、開発者が必要に応じてそれらを編集することに依存しています。個人的には、WinFormsのようなより基本的なWPFコントロールが必要ですが、これもまた別の話です。
他の2つのオプションは、まったく新しいコントロールを最初から開始するか、オンラインで気に入ったコントロールの外観を見つけて購入することです。多くのWebサイトは、カスタムメイドの.netコントロールを販売しています。
はい、WPF ではすべてが可能です。ただし、Windows フォームのみに慣れている場合は、WPF は新しい概念を備えた新しいテクノロジであり、習得するのに時間がかかることに注意してください。
Femaref が言うように、WPF には多くの可能性がありますが、WinForms ではかなり困難です。
彼がリンクしているページよりも少し先に進みたい場合 (スタイルのみをカバーしています)、同じページのサイドバーにある「テンプレートとスタイル」のポイントに興味があるかもしれません:テンプレートとスタイル、およびテンプレート部分そこに:テンプレート。テンプレートを使用すると、スタイルではできないことのほとんどを行うことができます。非常に基本的な例 (テンプレートに関するほぼすべてのチュートリアルで見られるもの) は、楕円形のボタンです。さらに、トリガーを使用して、マウスオーバーやマウスクリックの外観など、他のものを再定義することもできます。
それが役立つことを願っています;)