過去のブログのアーカイブ
この記事は前身のブログのアーカイブを引き継いだものです.
画像が正しく表示できないなど,コンテンツの表示に問題がある恐れがあります.NET環境で標準のTreeViewを使用したらVista以降のPCでもXPスタイルで表示される。
ちょこちょこっといじればVista風のスタイルになるらしいのでそのまとめ
ついでにXPスタイルとVistaスタイルの違いはこんな感じ
そこまで大きな違いがあるというわけではないのですが、古臭いソフトというイメージを持たれるぐらいならいいかなと。
ソースコード
[ToolboxBitmap(typeof(TreeView))] public class TreeView : System.Windows.Forms.TreeView { [DllImport("uxtheme.dll", CharSet = CharSet.Unicode)] private static extern int SetWindowTheme(IntPtr hWnd, string pszSubAppName, string pszSubIdList); [DllImport("user32.dll")] private static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam); public TreeView() { base.HotTracking = true; base.ShowLines = false; } protected override CreateParams CreateParams { get { CreateParams cp = base.CreateParams; cp.Style |= 32768; return cp; } } [Browsable(false)] private new bool HotTracking { get { return base.HotTracking; } set { base.HotTracking = true; } } [Browsable(false)] private new bool ShowLines { get { return base.ShowLines; } set { base.ShowLines = false; } } protected override void OnHandleCreated(EventArgs e) { base.OnHandleCreated(e); SetWindowTheme(base.Handle, "explorer", null); int style = SendMessage(base.Handle, 4397, 0, 0); style |= 100; SendMessage(base.Handle, 4396, 0, style); } }
VistaスタイルにするとHotTrackingやShowLinesは意味なくなるので隠しています。