【问题标题】:C# Passing Data from form2 to form3 [duplicate]C#将数据从form2传递到form3 [重复]
【发布时间】:2017-08-04 01:40:00
【问题描述】:

我正在开发一个田间农场软件。有3种形式:form1form2form3

form1 只是一个欢迎页面,然后当您进入 form2 时,它是一个数据集合,输入从文本框中收集,然后在后台相乘并显示在 form3.

【问题讨论】:

  • 这个代码在哪里?你遇到了什么问题,代码?
  • Stackoverflow 专注于解决具体的编程问题,而不是提供一般的编程建议。请参考stackoverflow.com/help/how-to-ask
  • 请不要重复...阅读曲目
  • 被标记为重复的ppost实际上不同
  • 阅读两个问题

标签: c# winforms


【解决方案1】:

最糟糕的做法是,您可以在 Form3 上拥有 14 种不同的面向公众的属性。

public string textboxValue1;
public string textboxValue2;
public string textboxValue3;
etc...

然后,当您新建 Form3 时,您将可以访问这些并以这种方式传递数据。

所以:

Form3 form3 = new Form3();
form3.textboxValue1 = fieldValue1;
form3.textboxValue2 = fieldValue2;
form3.textboxValue3 = fieldValue3;
etc..
form3.ShowModal();
form3.Dispose();

理想情况下,您应该使用业务对象/模型。 您已经提到了 14 行和 4 列,因此您的模型可能看起来像这样:

public class modelname
{
  public datatype column1fieldname { get; set; }
  public datatype column2fieldname { get; set; }
  public datatype column3fieldname { get; set; }
  public datatype column4fieldname { get; set; }
}

其中数据类型是 string、int、decimal 或您使用的任何值类型,并且 column_n_fieldname 与您的对象中的某些内容相关!

在 form2 上,您可以拥有私有财产:

private List<modelname> capturedData;

在构造函数中 - 新建它:

public Form2()
{
  InitializeComponent();

  capturedData = new List<modelname>();
}

当用户点击 form3 时,您可以将文本框中的数据填充到模型中 -> 然后将模型传递给 form3 以执行任何您想要的操作。

在 form2 上,您可能有几种方法,例如:

private void CollectData()
{
  capturedData.Clear();

  AddRowData(yourrow1column1value, yourrow1column2value, yourrow1column3value, yourrow1column4value);  // Row 1
  AddRowData(yourrow2column1value, yourrow2column2value, yourrow2column3value, yourrow2column4value);  // Row 2
  // etc...
}

private void AddRowData(datatype column1data, datatype column2data, datatype column3data, datatype column4data)
{
  capturedData.Add(new modelname() { column1fieldname = column1data, column2fieldname = column2data, column3fieldname = column3data, column4fieldname = column4data});
}

Form3 的构造函数可能是:

public Form3(List<modelname> capturedData)
{
  InitializeComponent();

  // Then whatever you want to do with it...
}

【讨论】:

  • 谢谢,但实际上无法理解
  • 你有什么不明白的地方?上面有两种解决方案......一种可怕的粗鲁菜鸟方式来做你想做的事(前 2 个代码块),另一种在技术上更正确地使用业务模型(只是一个你将存储一行数据的类),哪个然后,您可以将表单 3 传递给它的操纵视图。您甚至可以将此行传递到一些业务逻辑中,将数据转换为操作视图,以便您准备好传递到 form3。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-05-30
  • 1970-01-01
  • 2021-01-28
  • 1970-01-01
  • 2015-05-19
  • 1970-01-01
  • 2011-05-11
相关资源
最近更新 更多