将值从多个文本框传递到另一个表单上的字符串,或者从另一个表单的文本框中调用值/字符串

时间:2017-05-11 18:55:32

标签: c# .net

我已经搜索了高低,我几乎找到了我需要的东西。我需要能够将form1的文本框中的值转换为字符串,并在form4中使用,以便在我的情况下运行类似复制命令或storescp的内容。 例:            Form1中:            公共静态字符串port1            port1 = Pt1.text;            dicompath = location.text;

       Form4:
        port1 = frm1.Port1.Text;
        dicompath = frm1.location.text;

        finalpath = port1 + " --fork -v -pm -fe .dcm -tn -sp -od " + ((char)34) + dicompath + ((char)34);

        Process startInfo2 = new Process();
        startInfo2.StartInfo.CreateNoWindow = true;
        startInfo2.StartInfo.UseShellExecute = false;
        startInfo2.StartInfo.RedirectStandardOutput = true;
        startInfo2.StartInfo.RedirectStandardError = true;
        startInfo2.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
        startInfo2.StartInfo.FileName = @"C:\dcmtk\bin\storescp-tls.exe";
        startInfo2.StartInfo.Arguments = finalpath;
        startInfo2.StartInfo.RedirectStandardOutput = true;

出于某种原因,我不断收到“对象引用未设置为对象的实例。”

1 个答案:

答案 0 :(得分:0)

我在阅读您的问题的方式,询问如何将用户输入的值从一个表单传递到另一个表单。所以这里有一个最小的例子,向您展示了这样做的基本概念。 基本上,你只需要来创建一个接受参数的表单构造函数。然后,您可以使用此新构造函数实例化额外的表单,以使用您传递的值。

在此代码段中,我使用Form2 form2 = new Form2(theText);

将值从Form1传递到Form2

Form1.cs的

using System;
using System.Drawing;
using System.Windows.Forms;

namespace PassValuesBetweenForms_43923548
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            CreateTextBox();
            CreateSubmitButton();
        }

        private void CreateSubmitButton()
        {
            Button btn = new Button();
            btn.Text = "click me";
            btn.Click += ClickMeGotClicked;
            btn.Location = new Point(5, 25);
            this.Controls.Add(btn);
        }

        private void ClickMeGotClicked(object sender, EventArgs e)
        {
            string theText = ((TextBox)this.Controls["txtbx"]).Text;
            Form2 form2 = new Form2(theText);//call the parametized constructor
            form2.Show();
        }

        private void CreateTextBox()
        {
            TextBox tb = new TextBox();
            tb.Location = new Point(5, 5);
            tb.Width = 50;
            tb.Name = "txtbx";
            this.Controls.Add(tb);
        }
    }
}

Form2.cs

using System.Drawing;
using System.Windows.Forms;

namespace PassValuesBetweenForms_43923548
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }

        //make a parametized constructor
        public Form2(string incomingFromForm1)
        {
            InitializeComponent();
            if (!string.IsNullOrEmpty(incomingFromForm1))
            {
                MakeALabelWithThis(incomingFromForm1);
            }
        }

        private void MakeALabelWithThis(string incomingFromForm1)
        {
            Label lbl = new Label();
            lbl.Text = incomingFromForm1;
            lbl.Location = new Point(5,5);
            this.Controls.Add(lbl);
        }
    }
}