まずこの効果を見てみましょう
アイデアを教えてください:
TabControl コントロールを書き換えて、OnPaint メソッドをオーバーロードします
パブリック クラス CustomTabControl : TabControl
{
//......
保護されたオーバーライド void OnPaint(PaintEventArgs e)
{
this.PaintTransparentBackground(e.Graphics、base.ClientRectangle);
this.PaintAllTheTabs(e);
this.PaintTheTabPageBorder(e);
this.PaintTheSelectedTab(e);
}
//......
}
MDI ウィンドウを作成し、ToolStrip コントロールを追加します。
フォーム基本クラスを作成する
パブリック クラス BaseForm: フォーム{
保護されたツールストリップ ツールストリップ;
public static ListtoolStripItemList = new Lis();
protected void AddToolStrip(ToolStripItemtoolStripItem){
toolStripItemList.add(toolStripItem);
if(ツールストリップ != null){
toolStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[]{toolStripItem});
}
}
protected void SubToolStrip(string formName){
if(ツールストリップ != null){
foreach (toolStripItemList の ToolStripItem i){
if (i.Name == フォーム名){
toolStrip1.Items.remove(i);
}
}
}
}
}
親フォームの基本クラスを作成する
パブリック クラス MdiForm: BaseForm{
//Mdi フォームで ToolStrip コントロール toolsStrip1 を作成し、それを基本クラスの toolsStrip に割り当てます
保護されたオーバーライド void OnLoad(EventArgs e) {
base.OnLoad(e);
toolStrip = this.toolStrip1;
}
}
サブフォームの基本クラスを作成する
パブリック クラス ChildForm: BaseForm{
保護されたオーバーライド void OnLoad(EventArgs e) {
base.OnLoad(e);
ToolStripItemtoolStripItem = new ToolStripItem();
toolStripItem.Name = this.Name;
toolStripItem.Text = "xxxxxx";
AddToolStrip(toolStripItem);
}
protected オーバーライド void OnFormClosed(FormClosedEventArgs e) {
base.OnFormClosed(e);
サブツールストリップ(この名前);
}
}
これは単純な考えです。すべてのフォームは同時に基本クラスを継承します。この基本クラスに次の 2 つのオブジェクトを作成します: ToolStrip (Mdi ウィンドウにボタンを追加するためのコントロール) と List (ここでは簡単にするために単純な List です)フォーム内のフィールド変更などの他の効果を追加して、ToolStrip 上のボタンにさまざまな現実的な効果や画像などを持たせたい場合は、新しいサブフォームが読み込まれるたびに ToolStripButtonCollection を作成する必要があります。 ToolStripButtonCollection に項目を追加すると、ToolStripButtonCollection は自動的に ToolStrip にボタンを追加します。同様に、ToolStripButtonCollection が項目を減らすと、ToolStrip は自動的にボタンを減らします。ここでは、ToolStripButtonCollection 内のいくつかの値を検出することもできます。フィールドが変更されたかどうか、保存する必要があるかどうかなどを判断します。
次に、Mdi フォームを作成し、基本クラスで toolsStrip を初期化します。
サブフォームを作成した後、それが ChildForm から継承されたサブフォームである限り、サブフォームの名前にちなんで名付けられたボタンが Mdi ウィンドウ上に自動的に作成され、これは希望する効果と非常によく似ています。これはデモ用です。重要なのは、ToolStripButtonCollection クラスの作成です。
以上がwinformで丸いタブ描画を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。