winform不同窗体的传值(TreeView控件和右键弹出式菜单)-洋葱先生-杨少通
发布日期:2021-10-03 07:58:44
浏览次数:1
分类:技术文章
本文共 3513 字,大约阅读时间需要 11 分钟。
winform不同窗体的传值(TreeView控件和右键弹出式菜单)
实现功能:
①可以新增子节点,新节点名在新窗口输入,点击确定把值传回主窗口,新增子节点,参考图3-2-2
②可以修改节点的名称,方法与上类似。
③创建窗体3-2-1、3-2-2、3-2-3以实现不同窗体的传值④窗体3-2-1中拖入控件:TreeView、ContextMenuStrip(右键弹出式菜单),Name属性之(ID)如下:
代码如下:
//TreeView的“选中节点更改后”的事件
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e) { //当选中某节点时,展开其子节点 treeView1.SelectedNode.Expand(); }//_3_2_1的“页面加载”事件 private void _3_2_1_Load(object sender, EventArgs e) { //绑定 右键弹出菜单 treeView1.ContextMenuStrip = contextMenutrip1; } //弹出式菜单中“加入子结点”项的click事件 private void tsmInsert_Click(object sender, EventArgs e) { //为了使用_3_2_3中的公共变量而实例化f3 _3_2_3 f3 = new _3_2_3(); //为_3_2_3中的公共变量赋值为选中节点的名字 f3.insertNode = treeView1.SelectedNode.Name; //将f3中实例化的f1赋值为该窗体 f3.f1 = this; //将f3以非模式化形式(可切换窗体)打开 f3.Show(); } //弹出式菜单中“修改节点”项的click事件 private void tsmEdit_Click(object sender, EventArgs e) { //为了使用_3_2_2中的公共变量 _3_2_2 f2 = new _3_2_2(); //为_3_2_2中的公共变量赋值为选中节点的名字 f2.editNode = treeView1.SelectedNode.Name; //将f2中实例化的f1赋值为该窗体 f2.f1 = this; //将f2以非模式化形式(可切换窗体)打开 f2.Show(); } //弹出式菜单中“删除节点”项的click事件 private void tsmDelete_Click(object sender, EventArgs e) { //当用户单击“删除节点”时,弹出提示框,若单击“是”则删除,若单击“否”则不采取任何操作 DialogResult dr = MessageBox.Show("是否确认删除?", "消息提醒", MessageBoxButtons.YesNo, MessageBoxIcon.Information); if (dr == DialogResult.Yes) { //删除节点 treeView1.SelectedNode.Remove(); MessageBox.Show("删除成功!"); } } //当右键某节点时,将其选中 private void treeView1_MouseDown(object sender, MouseEventArgs e) { //当右键时 if (e.Button == MouseButtons.Right) { //用tn获得右键处节点的坐标 TreeNode tn = treeView1.GetNodeAt(e.X, e.Y); //tn不为空,则使选中节点变为tn处的节点 if (tn != null) treeView1.SelectedNode = tn; } } //反向传值,使传回来的值作为新加入子节点的名字,达到加入子节点的目的 public void insertNode_Function(string nodeName) { treeView1.SelectedNode.Nodes.Add(nodeName); } //反向传值,使传回来的值作为选中节点的新名字,达到修改节点名称的目的 public void editNode_Function(string nodeName) { treeView1.SelectedNode.Text = nodeName; }
⑤窗体3-2-2中拖入控件:Lable、TextBox、Button,Button的Text属性改为“修改”,Name属性之(ID)如下:
代码如下:
//创建公共变量,为了接收f1中传来的值
public string editNode; //实例化f1,为了使用f1中创建的insertNode_Function() public _3_2_1 f1; public _3_2_2() { InitializeComponent(); } //_3_2_3的“页面加载”事件 private void _3_2_2_Load(object sender, EventArgs e) { //label作为页面提示,即“修改某某节点的节点名称:” label1.Text = “修改“” + editNode + “”的节点名称:”; }//_3_2_2中的“修改”按钮的click事件 private void btnEdit_Click(object sender, EventArgs e) { //调用f1中的修改函数 f1.editNode_Function(textBox1.Text); //关闭f2窗体 this.Close(); //提示“添加成功!” MessageBox.Show("修改成功!"); }
⑥窗体3-2-3中拖入控件:Lable、TextBox、Button,Button的Text属性改为“添加”,Name属性之(ID)如下:
代码如下:
//创建公共变量,为了接收f1中传来的值
public string insertNode; //实例化f1,为了使用f1中创建的insertNode_Function() public _3_2_1 f1; public _3_2_3() { InitializeComponent(); } //_3_2_3的“页面加载”事件 private void _3_2_3_Load_1(object sender, EventArgs e) { //label作为页面提示,即“为某某节点添加子节点:” label1.Text = “为“” + insertNode + “”添加子节点:”; } //_3_2_3中的“添加”按钮的click事件 private void btnInsert_Click(object sender, EventArgs e) { //调用f1中的添加函数 f1.insertNode_Function(textBox1.Text); //关闭f3窗体 this.Close(); //提示“添加成功!” MessageBox.Show(“添加成功!”); } 如有转载请注明来源: www.dreamload.cn/blog/?p=329&preview=true (洋葱先生)转载地址:https://blog.csdn.net/Kindergarten_Sir/article/details/108587586 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
感谢大佬
[***.8.128.20]2024年04月19日 22时16分48秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
上手Pandas,带你玩转数据(6)-- 摆脱对pandas可视化丑图的刻板印象吧
2019-04-27
linux shell — 6.初识 EXT2 文件系统
2019-04-27
Java — String(字符串)
2019-04-27
linux shell — 7.linux 磁盘与文件系统管理
2019-04-27
linux shell — 8.linux 磁盘与文件系统管理(2)
2019-04-27
Java — 事件监听、事件处理 初体验
2019-04-27
linux — Centos 7(第一天) 使用时出现的问题及解决方法
2019-04-27
数据结构 — 查找(最基础)
2019-04-27
关于 自减运算符 (i--/--j)在 循环(for与while)中的执行过程
2019-04-27
Jquery - Jquery 包装集
2019-04-27
python - 【用户、商品】【购买、浏览】数据处理
2019-04-27
python - sql + pandas 与 sqlite 结合
2019-04-27
python - 使用sql 分析(06 - 15)国内各省GDP
2019-04-27
python - 抓取汇率数据分析美元和欧元对RMB的变化曲线
2019-04-27
python 数据科学 - 【回归分析】 ☞ 线性回归(2)
2019-04-27
设计模式——工厂模式
2019-04-27