1

私は TabControl を使用しており、DrawFixed を使用しています。その下のパネルではなく、タブのみを描画したいだけです。

タブコントロール パネル

どうすれば削除できますか?

またお聞きしたいのですが、タブのサイズを変更できますか?長いテキストがあり、選択されている場合はすべて表示したいが、アクティブでない場合はトリミングされていることを確認したい。

draw イベントをフォローしましたが、常に同じサイズでタブを描画します。

if (e.State == DrawItemState.Selected)
{
    e.Graphics.FillRectangle(Brushes.White, e.Bounds.Left, e.Bounds.Top, e.Bounds.Width, e.Bounds.Height);
}
else
{
    e.Graphics.FillRectangle(Brushes.LightGray, e.Bounds.Left, e.Bounds.Top, e.Bounds.Width, e.Bounds.Height);
    text = text.Length > 10 ? text.Substring(0, 10) + "..." : text;
}

e.Graphics.DrawString(text, e.Font, Brushes.Black, e.Bounds.Left + 17, e.Bounds.Top + 3);

前もって感謝します。

4

2 に答える 2

1

あなたの質問では時系列的に、上部にあるそのバーを取り除く方法を尋ねました。タブがコントロールの固定セットのコンテンツを制御するだけの「フェイク」タブ ページを使用することを主張する場合は、タブ コントロールの高さをそれが表示されないポイントまで縮小することは、おそらく受け入れられる解決策です。私はちょうどそれを試してみました. 記録のために、表示したいすべてのコントロールをまとめたカスタム コントロールを作成したとしても、意図したとおりに、つまりコントロールのホストとして実際にタブ ページを使用することをお勧めします。これは、タブ パラダイムによりよく適合します。

2 番目のポイントとして、タブのサイズを変更します。不可能。DrawStyleフレームワークは、Normal との 2 つのオプションを提供しますOwnerDrawFixedNormalWindows がテキストとフォントに基づいてタブ サイズを設定できるようにしますOwnerDrawFixed。これは、タブ サイズが完全に固定されていることを意味します。これ以上の制御はありません。ただし、タブ自体をペイントするために使用したいイベントにOwnerDrawFixedアクセスできます。OnDrawItem

弾丸をかみ、UserPaint を True に設定したようです。これは、すべての描画を行っていることを意味します。この時点で、設定をDrawStyleに戻すことをお勧めしNormalます。そうすれば、Windows にタブ幅を自動的に制御させるために、舞台裏のテキストをいくつか隠すことができます。誰もが異なるフォント設定をしており、数ピクセルずれており、何も正しく描画されないため、これはあまり堅牢ではないことを警告します.

TabControl.GetTabRect(index As Integer)そこでここでは、特定のタブの外接する四角形を取得するために使用できるメソッドを指摘します。これをすべてのタブ インデックスのループで使用し、各タブから提供される四角形内でタブに必要なすべての描画を行います。OwnerDrawFixedこれは、ペイントする境界を取得するために使用する必要がないことを意味します。

Controlただし、より良い制御が必要な場合は、またはから始めて、見たいコントロールを正確に実装する方法が 80% ありますUserControl。同様の外観は、いくつかのロジックを使用してボタンを重ね合わせてペイントおよびレイアウトすることで実現できます。その後、必要なすべてのテキストの外観も取得できます。私も同じことを考えましたが、私はまだホストしているのでそうしませんでしたTabPages. そこから解放されるから、もっと楽に…

于 2012-09-18T23:15:42.307 に答える
0

ページテキストのデフォルトプロパティを使用するだけで、テキストのサイズに応じてタブサイズが自動的に修正されます..次に、自分でテキストをペイントします..画像などをペイントするための追加スペースが必要な場合は、パディングを使用しますタブ ページではなく、タブ コントロールのプロパティ。それがあなたのために完全に役立つことを願っています。

于 2013-02-07T06:10:25.093 に答える