类之间的返回值

时间:2014-01-15 20:03:35

标签: c#

如何在表单上单击按钮以将被调用方法的返回发送到另一个类?这是我所拥有的伪代码,我们将非常感谢任何帮助......

[班级图书馆]

    using System;
    using System.Runtime.InteropServices;
    using System.Text;
    using System.Collections.Generic;
    using System.Linq;

    namespace Auto
    {
        GUID Info
        public interface IAuto
    {
        string SendToOtherApp();

    }

    COM Info
    public class Auto : IAuto
    {

        public string tbox1;
        NAVForm frm1 = new NAVForm();

        public Auto()
        {
        }

        public string SendToOtherApp()
        {
            frm1.ShowDialog();
            tbox1 = NAVForm.UseThis();
            return tbox1;
        }
    }
}

[表格]

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Auto
{
    public partial class NAVForm : Form
    {
        public NAVForm()
        {
            InitializeComponent();
        }

        private void NAVForm_Load(object sender, EventArgs e)
        {

        }

        private void button2_Click(object sender, EventArgs e)
        {

            UseThis(textBox1.Text);

        }
        public string UseThis(string txt)
        {
            if (txt.Trim().Length != 0)
            {
                return txt;
            }
            else
            {
                return "didn't work";
            }
        }
    }
}

我想从公共字符串UseThis(字符串txt)获取返回值到公共字符串SendToOtherApp(),这对于调用它的其他系统是可见的。

我显然是C#的新手,所以我也非常愿意对项目和最佳实践进行全面批评。

2 个答案:

答案 0 :(得分:0)

这就是我所做的,而且效果很好。在我们的ERP中,我运行代码单元,它调用自动变量,该变量与" OpenThis()"方法。我的表单打开,我在文本框中输入文本,单击确定,它关闭了来自,ERP弹出一个消息框,显示消息框中的文本。 C#专家对这个版本有什么看法?我对你对这个解决方案的看法很感兴趣,所以请告诉我。

班级图书馆.....

using System;
using System.Runtime.InteropServices;
using System.Text;
using System.Collections.Generic;
using System.Linq;


namespace NavAutomation
{
    [InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
    [Guid("5D83B4FE-45E6-410E-A075-AD635F5F0354")]
    [ComVisible(true)]
    public interface INavAutomation
    {
        string HelloWorld();
        object OpenThis();
    }

    [ComVisible(true)]
    [Guid("B7806CE5-862A-4407-9A3E-14CE8A9FB83A")]
    [ClassInterface(ClassInterfaceType.None)]
    public class NavAutomation : INavAutomation
    {
        public NavAutomation()
        {
        }

        public object OpenThis()
        {
            using (var form = new NAVForm())
            {
                var result = form.ShowDialog();
                return form.RetVal1;
            }

        }
    }
}

表格.....

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace NavAutomation
{
    public partial class NAVForm : Form
    {

        public NAVForm()

        {

            InitializeComponent();
        }

        private void NAVForm_Load(object sender, EventArgs e)
        {

        }

        public string RetVal1 { get; set; }

        private void button2_Click(object sender, EventArgs e)
        {
            if (textBox1.Text.Trim().Length != 0)
            {
                this.RetVal1 = textBox1.Text;
            }
            else
            {
                this.RetVal1 = "didn't work";
            }
            this.Close();
        }
    }
}

答案 1 :(得分:-1)

我不确定我的目标是否正确但是这里的代码是当从一个来自调用时显示另一个带有文本框的模态形式时,你在该文本框中输入一个值并关闭这个模态形式以找到该值该文本框返回到第一个要求显示模态表单的表单。

CLASS LIBRARY

using System;
using System.Runtime.InteropServices;
using System.Text;
using System.Collections.Generic;
using System.Linq;

namespace Auto
{

    public interface IAuto
    {
        string SendToOtherApp();
    }

    public class Auto : IAuto
    {
        public string tbox1;
        NAVForm frm1 = new NAVForm();

        public Auto()
        {
        }

        public string SendToOtherApp()
        {
            frm1.ShowDialog();
            tbox1 = frm1.UseThis(frm1.textBox1.Text);
            return tbox1;
        }
    }
}

来自呼吁播放模式表格

namespace Auto
{
    public partial class Form1 : Form
    {

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Auto auto = new Auto();
            string returnedString = auto.SendToOtherApp(); // the string filled at the modal form text boxed will be returned to this variable
        }

    }

将以模式形式显示的表格

namespace Auto
{
    public partial class NAVForm : Form
    {
        public NAVForm()
        {
            InitializeComponent();
        }

        public string UseThis(string txt)
        {
            if (txt.Trim().Length != 0)
            {
                return txt;
            }
            else
            {
                return "didn't work";
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            UseThis(textBox1.Text);
        }

    }
}

请注意,NAVForm上textBox1的访问修饰符应设置为public,以使其对类Auto

可见

如果我误解了某些问题,请告诉我。