主题:请教几个C#问题
lrj525
[专家分:260] 发布于 2007-08-13 18:21:00
[img]http://www.51zsm.cn/1.jpg[/img]
初学C#,做为练习题做了一个这样的东西,费了九牛二虎之力把TreeView弄的差不多了,可以还有一些问题,请大家帮帮忙:
1、添加子类时必须选中一个类,然后才能添加它的子类,这个功能实现了,但是当我选中一个类后,把鼠标点到子类名文本框中时,左边的选项就没有选中的标识了,怎么才能让treeview中的节点在失去焦点时,同样显示已经选中过的项,像window中资源管理器那样,只是颜色变浅了?
2、怎么在图中横线的地方放一条水平的分隔线?
3、怎么在路径后面显示选中项的所有父类,比如我选中了金融投资,路径处显示为:经济与管理-金融投资,选中小说则只显示为:小说
4、在添加子类文本框中输入完类名后,怎么做我输入回车后就能调用添加按钮的事件完成添加功能。
未完成的源码可以在www.51zsm.cn/1.rar下载,vs2005平台
回复列表 (共4个回复)
沙发
jzyray [专家分:20610] 发布于 2007-08-13 22:34:00
1、
HideSelection设为false
2、
GDI+画线、很矮的带框Panel、线图片……发挥想象力吧
3、
TreeNode.FullPath属性,另外根据你的要求,TreeView.PathSeparator应设为“-”
4、
TextBox的KeyDown事件
如果键值是13(回车),则“添加”,并设Handled为true防止“滴”
板凳
lrj525 [专家分:260] 发布于 2007-08-14 11:29:00
非常非常感谢楼上的回答,初学者就是初学者,没人指点真的是要走很多湾路。比如第3个路径问题,昨晚我弄了好长时间是这样做的
private string Path = "";
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
TreeNode tn = treeView1.SelectedNode;
Path = "";
if (tn.Parent != null)
{
findParent(tn);
ClassPath.Text = "路径:" + Path;
}
else
{
ClassPath.Text = "路径:" + tn.Text;
}
}
//找到父接点
private void findParent(TreeNode tn)
{
Path = tn.Text+"--"+Path;
if (tn.Parent != null)
{
findParent(tn.Parent);
}
}
不知道有个FullPath属性就多写了这么多代码,呵呵
第2个问题我是用了一个label高度 设为2,borderStyle设为fixed3D
第4个问题 我是这样做的
private void ClassName1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
btnSave1_Click(sender, e);
ClassName1.Focus();
}
}
但我不不知道“并设Handled为true防止“滴””这个在什么地方设置
3 楼
jzyray [专家分:20610] 发布于 2007-08-14 15:51:00
KeyDown事件中e.Handled = true;
另外,如果模拟按钮点击操作,可以使用btnSave1.PerformClick();(.net 2.0+)
使用btnSave1_Click(sender, e);不是个规范用法,对今后重构不利
4 楼
lrj525 [专家分:260] 发布于 2007-08-15 18:41:00
非常感谢“jzyray”又学会了不少东西
我来回复