C#.NET winform treeview和panel导航效果

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#.NET winform treeview和panel导航效果相关的知识,希望对你有一定的参考价值。

点击treeview子节点,右侧显示不同的panel内容

参考技术A 用MDI子窗体做是最方便实用的方法。
如果坚持你的思路,就在点击子节点事件里,把当前显示的panel隐藏,然后把要显示的panel显示就可以了。不过这样写的话进程会占更多内存,功能有点山寨的感觉,虽然最后看起来的效果差不多
参考技术B 在点击事件里面,写上panel层的显示和隐藏就可以了,panel加上class
比如点击股份公司,显示panel2,隐藏panel3
点击分公司,显示panel3,隐藏panel2

$(".panel2").show(); 显示

$(".panel2").hide(); 隐藏

这个,记得应用jquery的包。
参考技术C 不要用PANEL做,这样定位太难控制了,用MDI子窗体做,点击TREEVIEW节点会打开相应窗体并嵌入在右侧。
具体方法可以查询百度追问

百度了没找到,能不能具体写下treeview子节点怎么创建mdi子窗体?谢谢了

追答

你百度创建mdi子窗体

本回答被提问者和网友采纳

Winform中TreeView的常用属性和方法?

详细。有事例更好。

TreeView控件是APS.NET中的常用控件,现对其用法做一简单小结,具体内容如下:

1.public TreeNode FindNode(string valuePath) ... 其中valuePath指节点的值路径 示例代码如下:

/// <summary>
/// 填充左侧的模块树
/// </summary>
/// <param name="tv_modules">树形控件</param>
/// <param name="selectedMID">选中的模块组号</param>
public void BuildLeftTree(TreeView tv_modules, int selectedMID)

//添加根节点
TreeNode rootTN = new TreeNode();
rootTN.Text = SysConfig.LEFTTREE_ROOT_TEXT;
rootTN.Value = SysConfig.LEFTTREE_ROOT_VALUE;
rootTN.ImageUrl = SysConfig.LEFTTREE_ROOT_IMAGEURL;
rootTN.NavigateUrl = SysConfig.LEFTTREE_ROOT_NAVIGATEURL;
rootTN.Target = SysConfig.LEFTTREE_ROOT_TARGET;
rootTN.PopulateOnDemand = false;
rootTN.SelectAction = TreeNodeSelectAction.None;
rootTN.Expand();
tv_modules.Nodes.Add(rootTN);

PlatformAccessor pa = new PlatformAccessor();

DataSet ds = pa.getCodeRow(6, 1);
DataTable dt = ds.Tables[0];
DataRow dr = dt.Rows[0];

string content = dr["CONTENTS"].ToString();

XmlNodeList nodes = _xmldoc.SelectNodes("/Root/MyModules/Item");

if (content == "1")

//添加“我的模块”节点
TreeNode mymodulesTN = new TreeNode();
mymodulesTN.Text = SysConfig.LEFTTREE_MYMODULES_TEXT;
mymodulesTN.Value = SysConfig.LEFTTREE_MYMODULES_VALUE;
mymodulesTN.ImageUrl = SysConfig.LEFTTREE_MYMODULES_IMAGEURL;
mymodulesTN.NavigateUrl = SysConfig.LEFTTREE_MYMODULES_NAVIGATEURL;
mymodulesTN.Target = SysConfig.LEFTTREE_MYMODULES_TARGET;
mymodulesTN.PopulateOnDemand = false;
mymodulesTN.SelectAction = TreeNodeSelectAction.None;
mymodulesTN.Expand();
rootTN.ChildNodes.Add(mymodulesTN);

//添加“我的模块”
foreach (XmlNode xmlnode in nodes)

_addOneTreeNode(mymodulesTN, xmlnode, false);




PlatformAccessor pfa = new PlatformAccessor();

DataRow row = pfa.getModuleData(selectedMID);

int mlevel = int.Parse(row["MLEVEL"].ToString());
int mtopid = int.Parse(row["MTOPID"].ToString());

if (mlevel == 1 && mtopid == -1)

XmlNodeList rootList = _xmldoc.SelectNodes("/Root/Item");

foreach (XmlNode xn in rootList)

_addOneTreeNode(rootTN, xn, false, selectedMID);


return;

else

int mid = selectedMID;

int[] mids = new int[mlevel];

for (int i = 0; i < mlevel; i++)

DataRow dr_Temp = pfa.getModuleData(mid);

mids[i] = int.Parse(dr_Temp["MID"].ToString());

mid = int.Parse(dr_Temp["MTOPID"].ToString());


int[] sort_mids = new int[mlevel];

for (int i = 0; i < mlevel; i++)

sort_mids[i] = mids[mlevel - 1 - i];


for (int i = 0; i < mlevel; i++)

if (i == 0)

XmlNodeList rootList = _xmldoc.SelectNodes("/Root/Item");

foreach (XmlNode xn in rootList)

_addOneTreeNode(rootTN, xn, false, sort_mids[i]);


else

string temp = "";

for (int k = 0; k < (i + 1); k++)

temp += "/" + sort_mids[k].ToString();


//string valuePath = "ROOT/1031/1036";

string valuePath = SysConfig.LEFTTREE_ROOT_VALUE + temp;

TreeNode treeNode = tv_modules.FindNode(valuePath);

treeNode.Expand();






参考技术A 请参见 仔细看对你以后有用
http://msdn.microsoft.com/zh-cn/library/system.windows.forms.treeview_members.aspx

以上是关于C#.NET winform treeview和panel导航效果的主要内容,如果未能解决你的问题,请参考以下文章

HTTP模拟工具C#/Winform源码Json绑定TreeView控件使用了MetroModernUIRestSharpDapper.NetNewtonsoft.JsonSmartT

c#WINFORM中treeview怎么进行数据绑定

C#-WinForm-Treeview-树状模型

WinForm控件TreeView 只部分节点显示 CheckBox

C# winform treeview 节点展开状态的图标设置

C# winform开发中,如果treeview的节点太多,导致加载很慢,怎么做可以提给效率?