五一趁休息时段,在家里编写一个小小的Winform程序练练手,因为已经超级长时间没再开发Winform担心生疏了:);程序也很简单,只是能将文件上传到本地或将路径保存到Sqllite中,没错我这次用Sqllite没想用太大型的数据库,也不想装ACCESS了事,所以用了Sqllite;至于Sqllite的使用嘛,可以看看我以前的一篇文档【极速40分钟写出SQLite数据展示与导出功能】,不错的。。
好吧,闲话莫说,直接说说目前遇到的问题,我通过一个treeView作为文档关键词的分类显示,发现treeView除了显示外还可以进行修改不过呢,这个修改不是很太好。1、修改只是当前,没有保存。2、需求是修改关键词,下面的文件关联不能修改。于是就进行研究,研究的结果就是下面的代码:
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 删除。