回 帖 发 新 帖 刷新版面

主题:请教几个C#问题

[img]http://www.51zsm.cn/1.jpg[/img]
初学C#,做为练习题做了一个这样的东西,费了九牛二虎之力把TreeView弄的差不多了,可以还有一些问题,请大家帮帮忙:

1、添加子类时必须选中一个类,然后才能添加它的子类,这个功能实现了,但是当我选中一个类后,把鼠标点到子类名文本框中时,左边的选项就没有选中的标识了,怎么才能让treeview中的节点在失去焦点时,同样显示已经选中过的项,像window中资源管理器那样,只是颜色变浅了?

2、怎么在图中横线的地方放一条水平的分隔线?

3、怎么在路径后面显示选中项的所有父类,比如我选中了金融投资,路径处显示为:经济与管理-金融投资,选中小说则只显示为:小说

4、在添加子类文本框中输入完类名后,怎么做我输入回车后就能调用添加按钮的事件完成添加功能。

未完成的源码可以在www.51zsm.cn/1.rar下载,vs2005平台

回复列表 (共4个回复)

沙发

1、
HideSelection设为false
2、
GDI+画线、很矮的带框Panel、线图片……发挥想象力吧
3、
TreeNode.FullPath属性,另外根据你的要求,TreeView.PathSeparator应设为“-”
4、
TextBox的KeyDown事件
如果键值是13(回车),则“添加”,并设Handled为true防止“滴”

板凳

非常非常感谢楼上的回答,初学者就是初学者,没人指点真的是要走很多湾路。比如第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 楼

KeyDown事件中e.Handled = true;

另外,如果模拟按钮点击操作,可以使用btnSave1.PerformClick();(.net 2.0+)
使用btnSave1_Click(sender, e);不是个规范用法,对今后重构不利

4 楼

非常感谢“jzyray”又学会了不少东西

我来回复

您尚未登录,请登录后再回复。点此登录或注册