如何将值从子表单传递到父表单并返回? [英] How can I pass a value from child form to parent form and back?

查看:41
本文介绍了如何将值从子表单传递到父表单并返回?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个像这样的父表单.cs

I have a parent form first.cs like this

public partial class first : Form
{
    public Graph graphi { get; }
    Graph g = new Graph();
    string s1 = null;

    private void button1_Click(object sender, EventArgs e)
    {
        Stream myStream = null;

        var parser = new Notation3Parser();
        var graph = new Graph();
        OpenFileDialog openFileDialog1 = new OpenFileDialog();
        openFileDialog1.Filter = "RDF files (*.n3)|*.n3";
        openFileDialog1.FilterIndex = 1;
        openFileDialog1.RestoreDirectory = true;
        openFileDialog1.Multiselect = false;

        if (openFileDialog1.ShowDialog() == DialogResult.OK)
        {
            try
            {
                if ((myStream = openFileDialog1.OpenFile()) != null)
                {
                    using (myStream)
                    {
                        string s = openFileDialog1.FileName.ToString();

                        string w = Directory.GetCurrentDirectory().ToString();

                        string Fname = openFileDialog1.SafeFileName.ToString();
                        File.Copy(s, Path.Combine(w, Fname), true);

                        // Insert code to read the stream here.
                        Win32.AllocConsole();
                        s1 = Path.Combine(w, Fname);

                        showPath.Text = s1;
                        String parentvalueadress = this.s1;
                        showPath.Visible = true;
                        insertNodeButton.Visible = true;
                        delBut.Visible = true;


                        showNodes showNodes1 = new showNodes(s1);
                        g = showNodes1.returngraph();



                        Console.Read();
                        Win32.FreeConsole();


                        this.Show();
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error: Could not read file from disk. Original error: " + ex.Message);
            }
        }
    }

    private void insertNodeButton_Click(object sender, EventArgs e)
    {
        addTriple a1 = new addTriple();
        a1.BringToFront();
        a1.ShowDialog();
        g.SaveToFile(this.s1);
    }

    private void button3_Click(object sender, EventArgs e)
    {
        delete a1 = new delete();
        a1.BringToFront();
        a1.ShowDialog();
    }
}

在 insertNodeButton_Click 方法中,我想将图形 g 的值传递给子窗体,它的代码如下:

in insertNodeButton_Click method I want to pass a value of graph g to the child form that it is code is like this:

public partial class addTriple : Form
{
    Graph gr;
    String childvalueadress;

    private void addTriple_Load(object sender, EventArgs e)
    {
        var parser = new Notation3Parser();
        var graph = new Graph();    
        gr = graph;
        parser.Load(graph, childvalueadress);    
    }

    private void subComboBox_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (subComboBox.SelectedItem.ToString() == "URI")
        {
            subUriTB.Visible = true;
            label1.Visible = true;
        }
        else
        {
            subUriTB.Visible = false;
            label1.Visible = false;
        }
    }

    private void objComboBox_SelectedIndexChanged(object sender, EventArgs e)
    {
        if ((objComboBox.SelectedItem.ToString() == "URI") || (objComboBox.SelectedItem.ToString() == "Literal"))
        {
            objUriTB.Visible = true;
            label1.Visible = true;
        }
        else
        {
            objUriTB.Visible = false;
            label1.Visible = false;
        }
    }

    private void addTripleButton_Click(object sender, EventArgs e)
    {
        if (subComboBox.Text.ToString() == "select" || objComboBox.Text.ToString() == "select")
            MessageBox.Show("please select node types");

        else if ((subComboBox.SelectedItem.ToString() == "URI") && (subUriTB.Text.ToString() == ""))
            MessageBox.Show("please fill text box for URI");
        else if ((preUriTB.Text.ToString() == ""))
            MessageBox.Show("please fill text box for URI");
        else if ((objUriTB.Text.ToString() == "") && ((objComboBox.SelectedItem.ToString() == "URI") || (objComboBox.SelectedItem.ToString() == "Literal")))
            MessageBox.Show("please fill text box for object name");
        else if ((objComboBox.SelectedItem.ToString() == "URI") && (objUriTB.Text.ToString() == ""))
            MessageBox.Show("please fill text box for URI");
        try
        {
            if ((subComboBox.Text.ToString() == "URI") && (objComboBox.Text.ToString() == "URI"))
                addUUU(subUriTB.Text.ToString(), preUriTB.Text.ToString(), objUriTB.Text.ToString(), gr);
            else if ((subComboBox.Text.ToString() == "URI") && (objComboBox.Text.ToString() == "Literal"))
                addUUL(subUriTB.Text.ToString(), preUriTB.Text.ToString(), objUriTB.Text.ToString(), gr);
            else if ((subComboBox.Text.ToString() == "Blank") && (objComboBox.Text.ToString() == "Literal"))
                addBUL(preUriTB.Text.ToString(), objUriTB.Text.ToString(), gr);
            else if ((subComboBox.Text.ToString() == "URI") && (objComboBox.Text.ToString() == "Blank"))
                addUUB(subUriTB.Text.ToString(), preUriTB.Text.ToString(), gr);
        }
        catch
        {
            MessageBox.Show("please correct the uri");
        }
        gr.SaveToFile("c:\\n.n3");
    }
}

并在此子窗体中使用此值,然后将其传递给父窗体 first.cs

and work with this value in this child form and then pass it to the parent form first.cs

我该怎么做?

推荐答案

定义一个 子窗体的属性

// In Parent Form
addTriple a1 = new addTriple();

a1.G = graphicdata //assign graphic data here
a1.BringToFront();
a1.ShowDialog();
g.SaveToFile(this.s1);


// In Child Form
public Graph  G
{
    get { return gr; }
    set { gr = value; }
}

现在您可以访问此任何内容并在显示表单之前为其分配数据

now you can have access to this anywere and assign data to it before showing the form

这篇关于如何将值从子表单传递到父表单并返回?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆