我已经搜索了高低,我几乎找到了我需要的东西。我需要能够将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;
出于某种原因,我不断收到“对象引用未设置为对象的实例。”
答案 0 :(得分:0)
我在阅读您的问题的方式,询问如何将用户输入的值从一个表单传递到另一个表单。所以这里有一个最小的例子,向您展示了这样做的基本概念。 基本上,你只需要来创建一个接受参数的表单构造函数。然后,您可以使用此新构造函数实例化额外的表单,以使用您传递的值。
在此代码段中,我使用Form2 form2 = new Form2(theText);
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);
}
}
}