winform のコントロール ボックスを、異なる背景と異なるボタン イメージでカスタマイズしたいと考えています。どうすればそうできますか?usercontrol などでカスタム コントロールボックスを作成し、それを winform に追加する方法はありますか?
3 に答える
.NET フレームワークの手段を使用しても、影響はありません。フォームの非クライアント領域にカスタム描画を実装する必要があります。以下がここで役立つかもしれません: http://www.codeplex.com/wikipage?ProjectName=CustomerBorderForm&title=Painting%20NonClient%20Area
UserControl
などから継承することで、独自のカスタム コントロールを作成できます。
class MyControl : System.Windows.Forms.Button //this could also have been System.Windows.Forms.UserControl or any other existing control type as a template
{
protected override void OnPaint(System.Windows.Forms.PaintEventArgs e)
{
//Paint whatever you wish on this buttons graphics using e.Graphics
}
}
カスタム コントロールのプログラミングには多くの作業があります。ここで答えるには多すぎます。良いリファレンスは次のとおりです。http://msdn.microsoft.com/en-us/library/6hws6h2t.aspx
独自の種類のフォーム コントロールを作成し、親コントロール ボックスを非表示にすることができます。System.Windows.Form
または、カスタム フォームを継承して作成することもできます。しかし、私はそれを自分で試したことはありません。
また、OnPaint を使用する場合、パフォーマンスやちらつきなどを気にする場合は、いくつかのルールに留意する必要があります。.Net アプリケーションで OnPaint を使用する正しい方法は何ですか?
正しく理解しているかどうかはわかりません。独自のコントロールを作成しますか? もしそうなら、これを試してください:
- カスタム コントロールを作成します。
- コントロールのタイプを変更します。
変化する:
public partial class MyCustomControl : Control { ... }
為に:
public partial class MyCustomControl : Form { ... }
- Controlbox プロパティの値を false に変更します。
- カスタマイズするプロパティを変更します。
- 新しいフォームを作成します。
- フォームのタイプを変更します。
変化する:
public partial class MyForm : Form { ... }
為に:
public partial class MyForm : MyCustomControl { ... }
これで、MyForm は MyCustomControl のようになり、すべてのプロジェクトで再利用できます。