如何获得 .NET TreeView 的 Windows 原生外观?

2023-11-21

Trees

在 .NET 中使用 TreeView 组件时,我看到了左侧树的外观。 如何为我的 .NET TreeView 获得正确的树外观(Windows Native Look)?

我特别想要得到的是“三角形”节点手柄和蓝色“气泡”选择方块。


您需要 P/Invoke 才能调用SetWindowTheme传递树的窗口句柄并使用“explorer”作为主题。

将以下代码粘贴到项目中的新类中,编译并使用此自定义控件而不是内置控件TreeView控制。

C#:

public class NativeTreeView : System.Windows.Forms.TreeView
{
    [DllImport("uxtheme.dll", CharSet = CharSet.Unicode)]
    private extern static int SetWindowTheme(IntPtr hWnd, string pszSubAppName,
                                            string pszSubIdList);

    protected override void CreateHandle()
    {
        base.CreateHandle();
        SetWindowTheme(this.Handle, "explorer", null);
    }
}

VB.NET:

Public Class NativeTreeView : Inherits TreeView

    Private Declare Unicode Function SetWindowTheme Lib "uxtheme.dll"
        (hWnd As IntPtr, pszSubAppName As String, pszSubIdList As String) As Integer

    Protected Overrides Sub CreateHandle()
        MyBase.CreateHandle()
        SetWindowTheme(Me.Handle, "Explorer", Nothing)
    End Sub

End Class

请注意,这个技巧对于ListView控制。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何获得 .NET TreeView 的 Windows 原生外观? 的相关文章

  • Google Cloud SDK 无法安装“.exe;.bat;.com”不是可识别的命令

    我正在尝试在 Windows 10 笔记本电脑上安装 google cloud SDK 我尝试删除安装文件夹中的空格 并将路径添加到我的环境变量中 完整的错误是 Output folder C Users user Documents Do
  • 为 Razor 组件添加 XML 文档

    有没有办法为 Razor 组件添加 XML 文档 我注意到 Microsoft 的一些组件有 IntelliSense 中显示的文档 然而 将通常的 XML 文档添加到代码隐藏部分类似乎不起作用
  • Sencha Cmd 5 + Java 8 错误

    在我的 Windows 构建服务器上安装 Java 8 JDK 后 执行以下命令时遇到以下错误sencha命令 C gt sencha Error Registry key Software JavaSoft Java Runtime En
  • 如何让R使用所有处理器?

    我有一台运行 Windows XP 的四核笔记本电脑 但查看任务管理器 R 似乎一次只使用一个处理器 如何让 R 使用全部四个处理器并加速我的 R 程序 我有一个基本系统 我使用它在 for 循环上并行化我的程序 一旦您了解需要做什么 此方
  • 为什么我在 Windows 上使用 async 和 wait 时会收到 NotImplementedError 错误?

    我有这个代码 import os import time import asyncio async def run command args Example from http asyncio readthedocs io en lates
  • 在c#中创建sql连接

    我是这个网站的新手 也是编程的新手 我目前正在通过销售点创建库存系统 它使用模态和非模态形式 我的问题是 我正在研究change password对话框必须连接到数据库才能覆盖密码字段 我使用的数据库是Microsoft SQL Serve
  • 获取自动热键中的可用屏幕区域

    我正在尝试编写一些简单的 AutoHotkey 脚本来移动窗口 但在获取正确的屏幕尺寸值时遇到问题 我试图获取屏幕上可用区域的大小 通常是全屏分辨率减去任务栏 也许还有任何其他停靠窗口 如 Vista 中的侧边栏 我发现的获取屏幕宽度的方法
  • Windows 10 上的 LibPNG 构建问题

    我试图在 Windows 10 上构建 libpng 以获取 win32 二进制文件 但我认为有一个与 awk 解析带有 CRLF 行结尾的文件相关的问题 我尝试使用 dos2unix 命令转换文件 但没有成功 结果相同 在 make 命令
  • 如何以一种形式发布两个或多个模型?

    我正在为一个项目开发互联网课程计划应用程序 该课程计划是根据以下模型构建的 使用数据库优先方法中的实体框架生成 public partial class Subject public int Id get set public string
  • 如何迭代所有注册表项?

    我正在尝试迭代所有注册表项以查找 包含 并删除 jre1 5 0 14 值 有办法做到吗 下面的代码只是在特定键下找到jre1 5 0 14 我确实想迭代所有的键 顺便说一句 if 子句获取是否等于 jre1 5 0 14 但如果它包含 j
  • VS2017在nuget包中将“Build Action”设置为“Content”

    我创建我的nuget包在gitlab使用以下命令行 nuget pack Prop Configuration Release OutputDirectory nuget REPONAME APPNAME APPNAME csproj 如果
  • 生成Excel文件错误

    我在经典 ASP 中使用以下代码生成 Excel 文件 代码很简单并且有效 我在 Windows Vista x86 上的 IIS 7 0 下运行代码 两个问题 有一个奇怪的警告框 这是屏幕快照 http i27 tinypic com 2
  • 在我的网站上显示 Google Analytics(分析)仪表板

    我设置了一个 ASP NET 网站 并使用 Google Analytics 进行页面跟踪 我唯一不喜欢的是我必须离开我的网站 到 Google Analytics 网站 才能看到该报告 有什么方法可以使用他们拥有的所有 AJAX 在我自己
  • 下载 .NET 3.5 的实体框架

    哪个版本的实体框架 EF 我可以用在 NET 3 5我可以在哪里下载这个旧版本 对于 Net 3 5 您可以使用 EF v1 您是否尝试从以下位置下载 Microsoft NET Framework 3 5 Service Pack 1 h
  • 检查列表是否包含另一个列表。 C#

    编辑 只是说 ContainsAllItem 中的注释解释得最好 很抱歉问这个问题 我知道以前有人问过这个问题 但我只是不明白 好的 所以我想检查一个列表是否包含另一个列表中的所有项目WITHOUT重叠 以及根据类字符串 名称变量 称为项目
  • 生成 .tail IL 指令的简单 F# 代码是什么?

    我想看看 tailIL 指令 但我一直在编写的使用尾部调用的简单递归函数显然已优化为循环 我实际上是在猜测这一点 因为我不完全确定反射器中的循环是什么样的 我绝对没有看到任何 tail不过操作码 我在项目的属性中检查了 生成尾部调用 我还尝
  • 为什么WCF中不允许方法重载?

    假设这是一个ServiceContract ServiceContract public interface MyService OperationContract int Sum int x int y OperationContract
  • 我应该如何在 VB.NET 中进行转换?

    所有这些都相等吗 在什么情况下我应该选择其中一个而不是其他 var ToString CStr 变量 CType 变量 字符串 DirectCast 变量 字符串 编辑 来自的建议不是我自己 https stackoverflow com
  • 在 .NET 中记录 StackOverflowException

    最近 我的 NET 应用程序 asp net 网站 中出现了堆栈溢出异常 我之所以知道该异常是因为它出现在我的 EventLog 中 我知道 StackOverflow 异常无法被捕获或处理 但是有没有办法在它杀死您的应用程序之前记录它 我
  • 如何将 CSV 文件读入 .NET 数据表

    如何将 CSV 文件加载到System Data DataTable 根据CSV文件创建数据表 常规 ADO net 功能是否允许这样做 我一直在使用OleDb提供者 但是 如果您正在读取具有数值的行 但希望将它们视为文本 则会出现问题 但

随机推荐

  • npm install openssl 在 Windows 10 上失败

    我在 Win10 的 Node js 命令窗口中运行以下命令 它失败了 有人知道如何解决它吗 我正在运行 Node js v7 3 0 C Users haozhang gt npm install openssl C Users haoz
  • WordPress,pre_get_posts 中有多个meta_key

    是否可以添加两个meta key s in pre get posts 我当前的查询 query gt set s query gt set meta key cat adresse stadtteil query gt set meta
  • 类别方法可以被重写吗? IOS

    我正在尝试计划如何向某些对象的所有实例添加一些方法 我认为向父对象 UIViewController 添加一个类别可以满足我想要做的事情 但是我可以重写以这种方式添加的方法吗 大多数情况下 子类将使用默认方法 但我确实知道我需要至少重写该方
  • 在 Android 操作系统中使用 SSLSocket 的 TLS 连接速度很慢

    我正在开发一个 Android 应用程序 它使用 SSLSocket 连接到服务器 这是我正在使用的代码 Connect if socket null socket isClosed socket isConnected if socket
  • “var self = this”方法背后的基本原理是什么? [复制]

    这个问题在这里已经有答案了 可能的重复 JS var self this 当查看用 JavaScript 编写的任意代码 例如在 GitHub 上 时 许多开发人员使用var self this然后使用self代替this来引用当前对象 这
  • 为什么 Hash#select 和 Hash#reject 将键传递给一元块?

    我的理解是Hash select and Hash reject每个都传递一个键及其值的数组 key value 作为每次迭代的单个块参数 您可以使用隐式破坏性赋值直接在块内单独选取它们 a 1 b 2 select k v k a gt
  • 如何为 IXmlSerialized 类型添加命名空间前缀

    我有以下类定义 XmlRoot ElementName person Namespace MyNamespace public class Person IXmlSerializable public string FirstName ge
  • 包安装错误 - 实体框架

    当我尝试创建 ADO NET 实体数据模型时发生错误 错误说 预安装的软件包引用了缺失的注册表 价值 找不到具有名称的注册表项 EntityFrameworkVisualStudio14Tools 下 软件 NuGet 存储库 我使用的是
  • 在后台启动 jenkins

    我正在使用 war 文件在我的服务器上运行 jenkins 他们说用 java jar jenkins war 来源 https wiki jenkins ci org display JENKINS Starting and Access
  • 什么 Maven 工件包含 javax.ws.rs.Path?

    我正在研究 Bill Burke 编写的 Restful Java with JAX RS 中的示例 我正在使用 intellij 并创建了一个 Maven 项目来制作 Hello World Web 服务 我理解 JAX RS 是一个规范
  • 如何对 Laravel 5.7“电子邮件验证”电子邮件发送进行排队

    Laravel 5 7 包含的 电子邮件验证 功能运行良好 但异步电子邮件发送 在用户注册或重新发送链接页面期间 并不理想 有没有办法通过队列发送电子邮件验证电子邮件 而无需在 Laravel 5 7 中重写整个电子邮件验证 没有内置的方法
  • 详细披露按下后注释详细信息?

    我有一个 MKMapView 注释对象 它有一个正确的标注附件详细信息披露按钮 当按下按钮时 我使用 addTarget action forControlEvent 调用一个选择器方法 该方法创建一个详细视图控制器并将其推送到视图堆栈上
  • 如何在 Visual C++ 中调试外部库 (OpenCV)?

    我正在用VC 2008开发一个项目 该项目使用 OpenCV 库 但我想这适用于任何其他库 我正在使用调试配置 链接器属性包括库 lib 的调试版本作为附加依赖项 在 工具 选项 下的 VC 目录中 我设置了包含目录 lib 目录以及库的源
  • hadoop - namenode上的连接被拒绝

    我在网上和stackoverflow上搜索了很长时间 但没有用 我已经在 2 节点集群设置中安装了 hadoop yarn 2 2 0 但出了问题 当我在主节点上使用 start dfs sh 和 start yarn sh 启动 hado
  • 使用新的 csproj 在 PDB 中嵌入 C# 源代码

    最近发布的 NET 工具似乎支持在 PDB 中嵌入 C 这应该会改善进入第三方等的体验 csc 我可以清楚地看到 embed 选项 将所有源文件嵌入到 PDB 中 但是 似乎没有任何方法可以在 csproj 中指定这一点 此外 似乎没有任何
  • Html2Canvas 调整大小

    我正在使用 html2canvas 来获取网页的屏幕截图并将其呈现为缩略图 好吧 400x300 不完全是缩略图 基于截图控制台代码 除了缩略图部分之外 一切都运行良好 如何将图像尺寸设置为 400x300 在 firebug 中 我将该属
  • 如何在 XSD 中添加条件验证:

    现有的 XSD 片段
  • 如何确保 WPF 数据绑定重构安全?

    因此 我正在完成我的第一个 WPF 项目 并且我很喜欢到目前为止所看到的内容 学习曲线比我预期的要多 但尽管如此 WPF 还是很酷的 然而 我在数据绑定概念上遇到了一些困难 我的一个具体问题是如何使我的数据绑定声明重构安全 考虑这个例子 p
  • 使用 fill 或 fill_ Between 绘制甜甜圈

    我想绘制一个甜甜圈 我的脚本是 import numpy as np import matplotlib pyplot as plt pi sin cos np pi np sin np cos r1 1 r2 2 theta np lin
  • 如何获得 .NET TreeView 的 Windows 原生外观?

    在 NET 中使用 TreeView 组件时 我看到了左侧树的外观 如何为我的 NET TreeView 获得正确的树外观 Windows Native Look 我特别想要得到的是 三角形 节点手柄和蓝色 气泡 选择方块 您需要 P In