首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

问一个有关问题。高分

2012-01-31 
问一个问题。高分!小弟创建一个窗口名为form1.在窗口左边添加一个treeview控件。然后添加一些节点。例如:AAAA

问一个问题。高分!
小弟创建一个窗口名为form1.
在窗口左边添加一个treeview控件。
然后添加一些节点。
例如:
AAAAA
  aaaaa1
  aaaaa2
  aaaaa3
BBBBB
CCCCC
DDDDD
EEEEE
我想实现一个功能,点击aaaaa1,可以在form1窗口上 treeview的右边一个空白区域 显示一个对话框A
点击aaaaa2,在form1窗口上,treeview右边的那快空白区域,显示对话框B。以此类推。

请问如何实现该功能呢?
类似于vc++中的setparent的功能一样。就是一个对话框和treeview的子节点绑定,点哪个,显示哪个。

大牛们重点说如何显示哈~多谢了。绑定我自己看看能看个差不多。可是如何显示呢?需要建立N个对话框?点击aaaaa1的时候,调用 对话框A。show?





[解决办法]

1,主窗口中添加一个TreeView控件
2,主窗口添加若干个Frame控件,命名相同,比如都叫Frame1,设置不同的Index值(即创建Frame控件数组),Visible都设置为False,位置都设置在TreeView右边,大小相同(调整到你希望的尺寸和位置)
3,在每个Frame控件上放上你需要的内容控件(你需要的不同的窗口内容)
4,TreeView添加节点,对应的节点给个关键字,比如,叫K1,K2.......Kn(TreeView的节点关键字只能是文本),分别和Frame1控件数组的Index对应
5,在窗口模块中,定义一个CurIdx变量

6,在TreeView_NodeClick事件中,
检查节点的Key值,然后,提取相关的数字(Mid(Node.Key,2))得出节点序号TheIndex
Frame(CurIdx).visible=false'将当前显示的窗口设置为不可见
Frame(TheIndex).Visible=True'将个当前节点对应的窗口设置为可见
CurIdx=TheIndex'记录当前显示的节点序号


[解决办法]
自己用form做对话框,大体程序如下:

VB code
Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As LongPrivate Sub Form_Load()   Dim nodX As Node   TreeView1.Move 0, 0, 6500, 5000   Set nodX = TreeView1.Nodes.Add(, , "R", "AAAAA")   Set nodX = TreeView1.Nodes.Add("R", tvwChild, "C1", "aaaaa1")   Set nodX = TreeView1.Nodes.Add("R", tvwChild, "C2", "aaaaa2")   Set nodX = TreeView1.Nodes.Add("R", tvwChild, "C3", "aaaaa3")   nodX.EnsureVisible   Set nodX = TreeView1.Nodes.Add(, , "S0", "BBBBB")   Set nodX = TreeView1.Nodes.Add(, , "S1", "CCCCC")   Set nodX = TreeView1.Nodes.Add(, , "S2", "DDDDD")   Set nodX = TreeView1.Nodes.Add(, , "S3", "EEEEE")    TreeView1.HideSelection = True    TreeView1.Indentation = 19 * Screen.TwipsPerPixelX    TreeView1.LabelEdit = tvwManual    TreeView1.LineStyle = tvwRootLinesEnd SubPrivate Sub Form_Unload(Cancel As Integer)    End    End SubPrivate Sub TreeView1_NodeClick(ByVal Node As MSComctlLib.Node)    Dim fm As Form    Set fm = Form2    fm.Caption = Node    '自己想要处理的事情'    Select Case Node'        Case "aaaaa1"''        Case "aaaaa2"''        Case "aaaaa3"'    End Select    fm.Move TreeView1.Left + 3000, TreeView1.Top + 500, 3000, 3000    fm.Show    SetParent fm.hwnd, Me.hwndEnd Sub
[解决办法]
可以使用Messagebox来显示对话框,然后使用Findwindow来查找这个对话框的句柄,并使用SetWindowPos或MoveWindow来设置对话框的位置。
至于该对话框属于那个控件(父对象),可以由MessageBox的第一个参数来指定。

热点排行