VB.NETの左揃えのTabControlで奇妙な動作をしています。スクリーンショット:
私が欲しかったのは、タブを左に90度回転させた場合と文字通り同じようにすることでした。
それは私が標準のXPテーマを使用していない(神は禁じられている)という事実と関係がありますか?それを機能させるための解決策はありますか?(難しい場合でも、対照的なスタイルのコントロールは必要ありませんが、プログラムの一貫性を保つ必要があります)
ありがとう!
ハッピーエンド:
VB.NETの左揃えのTabControlで奇妙な動作をしています。スクリーンショット:
私が欲しかったのは、タブを左に90度回転させた場合と文字通り同じようにすることでした。
それは私が標準のXPテーマを使用していない(神は禁じられている)という事実と関係がありますか?それを機能させるための解決策はありますか?(難しい場合でも、対照的なスタイルのコントロールは必要ありませんが、プログラムの一貫性を保つ必要があります)
ありがとう!
ハッピーエンド:
わかりました、問題を解決しました。他の誰かが同じ問題を抱えている場合は、このコントロールを使用してください。MITライセンスの下では無料です。著者によるスクリーンショット:
作成者が2つのコントロールを作成したことに注意してください。私のアドバイス:2つ目はcleartype(サブピクセルレンダリング後に回転します)のサポートが正しくありませんが、使いやすく、パディングコントロールが優れています。頑張れ!=)
編集
C++を使用していて、そのために必要な場合は、アプローチがあります。結果の画像:
alt text http://www.codeguru.com/dbfiles/get_image.php?id=6385&lbl=CXPTABCTRL_GIF&ds=20040309
作者は、彼がどのようにそれを行ったかについて非常に説明的でした。これは良い例です。例:
alt text http ://www.codeguru.com/dbfiles/get_image.php?id=6385&lbl=CXPTABCTRL_RIGHT_GIF&ds=20040309
これは記事へのリンクです。
もう1つの非常に優れたアプローチは、SkyBoundの多目的VisualStylesコンポーネントです。バイナリは無料のようですが、ソースは非常に公正な取引ではありません。後で確認しますが、ビジュアルスタイルのバグ修正が必要な場合は、選択肢のようです。(ソース:skybound.ca)
著者から:
何よりもまず、XPテーマのバグを静かに、効率的に、そして自動的に解消します。ただし、Windows XPThemeAPIを使用して独自のコントロールを描画するために使用できるクラスの単純なセットも提供します。
問題が解決しました!!= D
はい、これはタブコントロールのビジュアルスタイルレンダラーのバグです。すでに代替品を見つけたようです。もう1つの影響の少ないアプローチは、コントロールの視覚スタイルを選択的に無効にすることです。戦艦の灰色に戻り、垂直タブが正しく描画されます。タブページのコンテンツは引き続き正しくレンダリングされます。
using System;
using System.Windows.Forms;
using System.Runtime.InteropServices;
public class FixedTabControl : TabControl {
[DllImportAttribute("uxtheme.dll")]
private static extern int SetWindowTheme(IntPtr hWnd, string appname, string idlist);
protected override void OnHandleCreated(EventArgs e) {
SetWindowTheme(this.Handle, "", "");
base.OnHandleCreated(e);
}
}