過去のブログのアーカイブ
この記事は前身のブログのアーカイブを引き継いだものです.
画像が正しく表示できないなど,コンテンツの表示に問題がある恐れがあります.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は意味なくなるので隠しています。




