在 Windows 表单中将文本框值从一种形式传递到另一种形式
Passing Textbox Values one form to another form in Windows Forms
我正在尝试从用户那里获取用于绘制圆(为此我使用半径输入)和矩形(Edge1 和 Edge2)输入的输入值。我想将这些文本框值传递到另一个表单上以绘制它们。
如何将这些值移动到属性部分或任何解决方案想法中的另一种形式?
顺便说一句,表格在同一个项目中。
我定义了一个接口并实现了有关计算的过程。我的代码在下面并且有效,谢谢你的回复。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Assignment2
{
class CircleShape : Shape, IShape
{
public int radius;
public CircleShape(int radius)
{
this.radius = radius;
}
public double CalculateArea()
{
return Math.PI * radius * radius;
}
public double CalculatePerimeter()
{
return 2 * Math.PI * radius;
}
}
}
一种方法是在您的第二个表单上使用一个方法,returns 任何需要的详细信息
using (DrawForm drawForm = new DrawForm ())
{
drawForm.ShowDialog(); //will wait for the form to close before continuing
var userResults = drawForm.GetResults(); //returns whatever you need the form to return
return userResults;
}
上述逻辑仅在第二种形式是某种弹出形式时才有效。如果你希望两种形式都持久化,那就有点不同了。您可能希望确保两种形式都可以相互访问。当您创建 drawform 时,一定要保存对它的引用。并在 drawform 的构造函数中添加一个参数以包含主窗体。
DrawForm drawForm = new DrawForm(this);//now the forms can talk to each other
当用户点击 'go'
时在您的绘图表单中
mainForm.TriggerFinishedDrawing(drawingObject);
有多种方法可以实现这种行为,您只需要确定哪种流程在您的用例中最有意义
将数据从一个表单传递到另一个表单的一种简单方法是,您可以使用 Application.OpenForms Property
.
首先定义一个TextBox property
来访问Form1中的TextBox实例
// Form1.cs
public TextBox TB
{
get { return textBox1; }
set { textBox1 = value; }
}
然后调用Application.OpenForms
获取Form1实例。
// Form2.cs
Form1 fr = (Form1)Application.OpenForms["Form1"];
if (fr != null)
{
Form1 f1 = (Form1)fr;
// get text form Form1.textbox1
MessageBox.Show(f1.TB.Text);
}
如果通过点击Form1中的按钮打开Form2,并在Form2显示时传值,可以通过constructor
实现。
// Form1.cs
private void btnOpenForm2_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2(textBox1.Text);
f2.Show();
}
// From2.cs
string textformForm1;
public Form2(string str)
{
InitializeComponent();
textformForm1 = str;
}
private void btnShowText_Click(object sender, EventArgs e)
{
MessageBox.Show(textformForm1);
}
同样,你也可以使用public属性。
// Form1.cs
private void btnOpenForm2_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2();
f2.TextformForm1 = textBox1.Text;
f2.Show();
}
// Form2.cs
public string TextformForm1 { get; set; }
private void btnShowText_Click(object sender, EventArgs e)
{
MessageBox.Show(TextformForm1);
}
我正在尝试从用户那里获取用于绘制圆(为此我使用半径输入)和矩形(Edge1 和 Edge2)输入的输入值。我想将这些文本框值传递到另一个表单上以绘制它们。 如何将这些值移动到属性部分或任何解决方案想法中的另一种形式?
顺便说一句,表格在同一个项目中。
我定义了一个接口并实现了有关计算的过程。我的代码在下面并且有效,谢谢你的回复。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Assignment2
{
class CircleShape : Shape, IShape
{
public int radius;
public CircleShape(int radius)
{
this.radius = radius;
}
public double CalculateArea()
{
return Math.PI * radius * radius;
}
public double CalculatePerimeter()
{
return 2 * Math.PI * radius;
}
}
}
一种方法是在您的第二个表单上使用一个方法,returns 任何需要的详细信息
using (DrawForm drawForm = new DrawForm ())
{
drawForm.ShowDialog(); //will wait for the form to close before continuing
var userResults = drawForm.GetResults(); //returns whatever you need the form to return
return userResults;
}
上述逻辑仅在第二种形式是某种弹出形式时才有效。如果你希望两种形式都持久化,那就有点不同了。您可能希望确保两种形式都可以相互访问。当您创建 drawform 时,一定要保存对它的引用。并在 drawform 的构造函数中添加一个参数以包含主窗体。
DrawForm drawForm = new DrawForm(this);//now the forms can talk to each other
当用户点击 'go'
时在您的绘图表单中 mainForm.TriggerFinishedDrawing(drawingObject);
有多种方法可以实现这种行为,您只需要确定哪种流程在您的用例中最有意义
将数据从一个表单传递到另一个表单的一种简单方法是,您可以使用 Application.OpenForms Property
.
首先定义一个TextBox property
来访问Form1中的TextBox实例
// Form1.cs
public TextBox TB
{
get { return textBox1; }
set { textBox1 = value; }
}
然后调用Application.OpenForms
获取Form1实例。
// Form2.cs
Form1 fr = (Form1)Application.OpenForms["Form1"];
if (fr != null)
{
Form1 f1 = (Form1)fr;
// get text form Form1.textbox1
MessageBox.Show(f1.TB.Text);
}
如果通过点击Form1中的按钮打开Form2,并在Form2显示时传值,可以通过constructor
实现。
// Form1.cs
private void btnOpenForm2_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2(textBox1.Text);
f2.Show();
}
// From2.cs
string textformForm1;
public Form2(string str)
{
InitializeComponent();
textformForm1 = str;
}
private void btnShowText_Click(object sender, EventArgs e)
{
MessageBox.Show(textformForm1);
}
同样,你也可以使用public属性。
// Form1.cs
private void btnOpenForm2_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2();
f2.TextformForm1 = textBox1.Text;
f2.Show();
}
// Form2.cs
public string TextformForm1 { get; set; }
private void btnShowText_Click(object sender, EventArgs e)
{
MessageBox.Show(TextformForm1);
}