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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:winform打开文件对话框(图片类型)-洋葱先生-杨少通
下一篇:winform菜单栏、快捷菜单、右键弹出式菜单基本操作-洋葱先生-杨少通

发表评论

最新留言

感谢大佬
[***.8.128.20]2024年04月19日 22时16分48秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章