如何使用api获取treeview控件节点数据

作者&投稿:邵海 (若有异议请与网页底部的电邮联系)
C# treeview控件怎么获取节点个数?~

treeview.nodes.count

private void TVdepartment_ItemDrag(object sender, ItemDragEventArgs e)//左键拖动
{
if (e.Button == MouseButtons.Left)
{
DoDragDrop(e.Item, DragDropEffects.Move);

}

}

private void TVdepartment_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent("System.Windows.Forms.TreeNode"))
{
e.Effect = DragDropEffects.Move;
}
else
{
e.Effect = DragDropEffects.None;
}

}

private void TVdepartment_DragDrop(object sender, DragEventArgs e)//拖动
{ //获得拖放中的节点
TreeNode moveNode = (TreeNode)e.Data.GetData("System.Windows.Forms.TreeNode");

//根据鼠标坐标确定要移动到的目标节点
Point pt;
TreeNode targeNode;
pt = ((TreeView)(sender)).PointToClient(new Point(e.X, e.Y));
targeNode = this.TVdepartment.GetNodeAt(pt);

//如果目标节点无子节点则添加为同级节点,反之添加到下级节点的未端
TreeNode NewMoveNode = (TreeNode)moveNode.Clone();
if (targeNode.Nodes.Count == 0)
{
targeNode.Parent.Nodes.Insert(targeNode.Index, NewMoveNode);
}
else
{
targeNode.Nodes.Insert(targeNode.Nodes.Count, NewMoveNode);
}
//更新当前拖动的节点选择
TVdepartment.SelectedNode = NewMoveNode;
//展开目标节点,便于显示拖放效果
targeNode.Expand();

//移除拖放的节点
moveNode.Remove();
}

1、SendMessage
向TreeView控件发送消息通常要用API的sendmessge函数,这需要在标准模块里添加声明如下:
'API声明
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd AsLong, ByVal wMsg AsLong, ByVal wParam AsLong, lParam As Any) AsLong
Public Declare Function SendMessageLong Lib "user32" Alias "SendMessageA" (ByVal hwnd AsLong, ByVal wMsg AsLong, ByVal wParam AsLong, ByVal lParam AsLong) AsLong
这上面两个声明,区别只在最后一个参数。Tiger_Zhao说,前一种是自动取地址,通常对应指针类型的参数。后一种直接传值,通常对应非指针类型的参数。通常,如果MSDN 的参数类型有*,就用前一种。而后一种,实际上可以对应于下面这种调用: Call SendMessage(hTvw, TVM_EXPAND, TVE_EXPAND, ByVal hItem)。在这篇文章里有一个具体的例子。

2、获得TreeView Node对应的HItem
发消息时,常常需要提供的参数之一是TreeView Node对应的HItem。可以像下面这样获得:
PrivateFunction GetHTreeItem(ByVal nodX As MSComctlLib.Node, treX As MSComctlLib.TreeView) AsLong
nodX.Selected =True
GetHTreeItem = SendMessage(treX.hwnd, TVM_GETNEXTITEM, TVGN_CARET, 0)
End Function
不过,上面的方法中要改变treeview的当前节点。如果不希望改变当前节点的话,可以参考这篇文章里的办法:http://blog.csdn.net/slowgrace/archive/2009/04/16/4083667.aspx

3、向TreeView发送消息使Expand事件发生
Call SendMessage(treX.hwnd, TVM_EXPAND, TVE_EXPAND, ByVal GetHTreeItem(nodX, treX))

4、向TreeView发送消息使NodeClick事件发生
在这个帖子里http://blog.csdn.net/slowgrace/archive/2009/01/14/3772557.aspx,我尝试了发NM_CLICK通知消息的办法,但是不能激发NodeClick事件。解决的办法是找到节点的坐标,向指定坐标发送鼠标down和up消息,参见这篇文章http://blog.csdn.net/slowgrace/archive/2009/04/16/4084299.aspx。不过,这个办法是投递消息,如果需要直接发送消息那种效果,暂时还没找到什么好办法。

5、一些常用的工具
Spy++可用来实时观察窗口句柄和消息。APIVIEWER可用来帮你生成用于VB的API函数声明、类型声明、常量声明。

6、了解和使用API消息的方法
在http://msdn.microsoft.com/en-us/library/cc656648(VS.85).aspx里有所有的treeview控件相关消息。一般在消息的说明里会以表格的形式说明相关的参数。表格分成两列,左列是参数列表,右列是注释。比如像下面这句:

(LPARAM) lParam // = (LPARAM) (HTREEITEM) hItem
Tiger_Zhao解释说,它说明这个名为lParam的参数的用法。它的类型是(LPARAM),所以右边的注释首先有个(LPARAM),这是为了与参数类型匹配进行的强制类型转换,不用管(在VB 中就是Long);而(HTREEITEM) 说明这个参数期待的是一个句柄hItem,句柄在VB中也是Long。

7、一些常用到的常数
'for treeview
PublicConst TV_FIRST AsLong=&H1100
PublicConst TVM_GETNEXTITEM AsLong= TV_FIRST +10
PublicConst TVM_GETITEM = TV_FIRST +12
PublicConst TVM_EXPAND AsLong= TV_FIRST +2
PublicConst TVE_EXPAND AsLong=&H2
PublicConst TVM_GETITEMRECT = TV_FIRST +4


ug二次开发中,如何获取刀位点的tag序列,要用什么api函数?
CString sSql;, I\/ g$ S! d6 N3 k2 J CString sItem[7];, i; u3 J: [9 R+ L; \\( h6 Q4 q0 _CString sDriver = "MICROSOFT EXCEL DRIVER (*.XLS)";CString sDsn;- ?( I8 K1 M& z CString sFile = GetToolParamFullPath(); * ?( K* Y) S% Z\/ t- ?char *too...

API里那些接口<T><E>是啥意思啊
表其它的任何类型,就像泛型样,是用来限制装载类型的。。 .

VB6 API获取操作系统类型
void CMainPage::OnBnClickedVersion(){typedef void (WINAPI *PGNSI)(LPSYSTEM_INFO);typedef BOOL (WINAPI *PGPI)(DWORD, DWORD, DWORD, DWORD, PDWORD); OSVERSIONINFOEX osvi; SYSTEM_INFO si; PGNSI pGNSI; BOOL bOsVersionInfoEx; ZeroMemory(&si, sizeof(SYSTEM_INFO)); ZeroMemory(&...

TCloud与CRM连接方法
以下是一些常见的T Cloud与CRM连接方法:1. 使用API:T Cloud和CRM都提供了API接口,可以通过API接口进行连接和数据传输。开发人员可以编写代码将T Cloud和CRM连接起来,以实现数据的同步和共享。2. 使用第三方集成平台:一些第三方集成平台,如Zapier、IFTTT等,提供了T Cloud和CRM之间的集成服务。企业...

申请成功的淘宝客API怎么使用?还有DSK怎么使用?
申请成功的淘宝客API怎么使用?还有DSK怎么使用? 接下来,那就是登陆淘宝客,进去设定需要推广的宝贝咯,然后设定相关的佣金咯 API 怎么使用 怎么用于淘宝客 网上很多卖的,淘帝,多奥,淘宝客要怎么使用 你是要买东西还是做淘宝客?? 去阿里妈妈注册下,通过自己的连结接买。 不懂的自己先去看看...

silverlight调用淘宝api接口做淘宝客应用
起始页面为Login.aspx,固定调试端口为49441。需要配合自己淘宝开放平台的应用的回调页面URL来调整。ashx代码:  (说明:代码中ITopClient为淘宝接口TopSdk.dll中的类,此例子使用的ItemsOnsaleGetRequest是用于获取销售中的商品,response.Body是获取到的数据信息)复制代码   代码...

...谁知道API函数switchtothiswindow的详细使用方式(包括定义、调用和语...
;hWnd是将要提前的窗口的句柄,fAltTab是设置是否模拟一个ALT+TAB动作,如果为TRUE,则可以使最小化的窗口提到顶层获得焦点 函数调用:这个函数无法直接调用,需要从User32.DLL导出 procedure SwitchToThisWindow(hWnd:Thandle;fAltTab:boolean);stdcall;external 'User32.dll';导出后就可以使用了。

从API接口获取的json数据怎么存到对象的List集合中
而用net.sf.json包下JSONArray的静态方法:fromObject(list) 这是网上大多是都是直接用此方法快捷转换JSON,但是对于Hibernate级联操作关联的对象,这个方法就会报错,如果将映射文件中的级联配置去掉就行了。另外对于list的要求就是其中的元素是字符串或对象,否则JSON不知道你想要的是什么数据。<many-to-...

python 怎么调用 谷歌的analyzeentities api
介绍 我们每个人或多或少都会使用到名片。但是如果名片数量一大,管理它们就显得非常麻烦。因此我产生用这篇文章的案例来管理他们。这里,我先用手机对每张名片拍照,并按以下流程进行处理:把获得的名片图像交给我们的应用程序,抽取人名,公司名称,地址等信息。这里我使用了Google Vision API 和 自然语言...

Python C API使用时需要注意什么
char *attr_name)获得函数对象。o就是模块对象(lpMod),attr_name就是你想要调用的函数名了,假设叫main的函数,就是”main”,然后返回的就是函数对象,假设命名为lpFun。4.此时可以用API int PyCallable_Check(PyObject *o)去检查一下是不是获得了一个函数。假如确定的话,就可以直接用 ...

丹徒区13029381762: 如何查看jquery.treeview的api文档 -
巴卢芦芛: 1.先看选择器:$('#id'),$('.className') 2.再看具体操作api,$('#id').text(),$('#id').remove(), $('#id').append(''); 3.了解一些常用的方法,如$(document).ready(function(){});,$('.className').each(function(){}); 4.再利用这些dom操作a.

丹徒区13029381762: VB中的treeview和listview控件如何使用? -
巴卢芦芛: 使用 TreeView 控件 TreeView TreeView 控件可以用来显示具有层次结构的数据,例如组织树、索引项、磁盘中的文件和目录等. 图 2.40 典型的 TreeView 可能的用途 创建用户可以操作的组织树. 创建能够显示至少两层或更多层的数据库树. ...

丹徒区13029381762: 主窗体中显示标题子窗体通过TreeView节点调用 -
巴卢芦芛: 1)用SetParent() 此API函数设置父子关系, 2)用SetWindowLong()设置窗体样式, 3)用SetWindowPos()设置窗体的坐标和大小

丹徒区13029381762: js如何获取treeview选中节点的值? -
巴卢芦芛: 建议你用jquery去获取,很简单,比如:$(":checkbox").each(function(){ if($this.attr("checked")==true) {//找到选中的node的值 } })

丹徒区13029381762: 一个API函数操作树型菜单的问题,急...解决再加分
巴卢芦芛: 查了下MSDN确实可以,通过SengMessge发送不同的消息给treeview控件就可以了,具体参考我列出来的MSDN网址 MSDN Library&#9658;MSDN Library ArchiveWin32 and COM Development&#9658;User Interface&#9658;Windows Controls&...

丹徒区13029381762: 怎么使用C#中的TreeView控件??我是个新手对那个控件很陌生!! -
巴卢芦芛: 给你发一个例子看一下,很不错我就是看这个学会用TreeView控件的.你可以试一下,新建一个项目在窗体上加一个treeView1和一个listView1.using System; using System.Collections.Generic; using System.ComponentModel; using System....

丹徒区13029381762: 使用js如何获取treeview控件的当前选中的节点 -
巴卢芦芛: 其实这个你只要对样式有点了解就可以了,没有那么复杂,用firebug看下样式,在用js或jquery获取下该样式下的结点,就行了.

丹徒区13029381762: 如何获得 VB treeview 根节点引用 -
巴卢芦芛: 用NodeClick事件,有一个参数是返回具体被单击的节点 希望回答对你有帮助

丹徒区13029381762: vb中的treeview控件如何使用 -
巴卢芦芛: 使用控件需要知道,要想获得树状结构的每个层次中的子文件夹,必须使用递归过程来完成,下面所示代码所执行的工作是: 先把一个已经路径的文件夹添加到树状结构中,然后再遍历它的子文件夹: '添加文件夹 Public Sub AddDirectory(...

丹徒区13029381762: 我在母版页中创建了个treeview 怎么在内容页中取得treeview选中的node
巴卢芦芛: (Master.FindControl("treeview") as TreeView).SelectedNode 页面上的任何控件都可以通过FindControl获取到,建议你平时遇到问题的时候多看一下MSDN,这样会对你学习很有帮助的

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网