前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Winform treeview重命名那些事

Winform treeview重命名那些事

原创
作者头像
谭广健
修改2021-05-04 22:16:17
6060
修改2021-05-04 22:16:17
举报
文章被收录于专栏:谭广健的专栏谭广健的专栏

五一趁休息时段,在家里编写一个小小的Winform程序练练手,因为已经超级长时间没再开发Winform担心生疏了:);程序也很简单,只是能将文件上传到本地或将路径保存到Sqllite中,没错我这次用Sqllite没想用太大型的数据库,也不想装ACCESS了事,所以用了Sqllite;至于Sqllite的使用嘛,可以看看我以前的一篇文档【极速40分钟写出SQLite数据展示与导出功能】,不错的。。

完成76%的成果
完成76%的成果

好吧,闲话莫说,直接说说目前遇到的问题,我通过一个treeView作为文档关键词的分类显示,发现treeView除了显示外还可以进行修改不过呢,这个修改不是很太好。1、修改只是当前,没有保存。2、需求是修改关键词,下面的文件关联不能修改。于是就进行研究,研究的结果就是下面的代码:

代码语言:javascript
复制
        int nodeIndex = 0;
        bool nodeChanged = false;
        string nodeName = null;

        private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
        {
            if (e.Node.Tag==null) {
                return;
            }
            if (e.Button == MouseButtons.Right)
            {
                e.Node.BeginEdit();
            }
        }

        private void treeView1_AfterLabelEdit(object sender, NodeLabelEditEventArgs e)
        {
            if (e.Node.Tag == null)
            {
                return;
            }
            nodeName = e.Node.Text;
            nodeIndex = e.Node.Index;
            nodeChanged = true;
            e.Node.EndEdit(true);
        }

        private void treeView1_NodeMouseHover(object sender, TreeNodeMouseHoverEventArgs e)
        {
            if (nodeChanged == true)
            {                
                if (treeView1.Nodes[nodeIndex].Text != nodeName) {
                    MessageBoxButtons mess = MessageBoxButtons.OKCancel;
                    DialogResult dr = MessageBox.Show("请问是否修改当前的关键词修改为\n\r[" + nodeName+"===>" + treeView1.Nodes[nodeIndex].Text+ "]?", "提示", mess);
                    if (dr == DialogResult.OK)
                    {
                        var db = new SQLiteConnection(db_Path);
                        int cid = Convert.ToInt32(treeView1.Nodes[nodeIndex].Tag);
                        Key_words K = new Key_words() { Id = cid };
                        K.Name = treeView1.Nodes[nodeIndex].Text;
                        db.Update(K);
                        MessageBox.Show("修改成功~");
                        Read_keyworks();
                    }
                    else {
                        treeView1.Nodes[nodeIndex].Text = nodeName;
                    }
                }
                nodeChanged = false;
            }
        }

这个个人感觉还可以吧,毕竟已经很少开发Winform程序,现在都已经NET6的,但手艺还是留点。正如之前看的一篇文章,1万小时的锤炼,是任何人从平凡变成世界级大师的必要条件。。业精于勤。。。大家共互勉。。。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
作者已关闭评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档