C#Win表格。传递值
我有多个相互交互的winforms。一个表单允许用户输入一组属性,然后对它们进行验证,然后通过按钮单击移动到下一个表单。用户可以随时选择退出并转到上一个表单 我有一个业务对象类,它记录基本属性的值 最初,我使用简单、天真的参数在表单之间交换值。例如,让我们假设Form1和Form2。在按钮上单击“下一步”,Form1将隐藏,Form2将显示:-C#Win表格。传递值,c#,forms,winforms,C#,Forms,Winforms,我有多个相互交互的winforms。一个表单允许用户输入一组属性,然后对它们进行验证,然后通过按钮单击移动到下一个表单。用户可以随时选择退出并转到上一个表单 我有一个业务对象类,它记录基本属性的值 最初,我使用简单、天真的参数在表单之间交换值。例如,让我们假设Form1和Form2。在按钮上单击“下一步”,Form1将隐藏,Form2将显示:- // event of button click "Next" on Form1.cs // private void btnNext_C
// event of button click "Next" on Form1.cs //
private void btnNext_Click(object sender, EventArgs e)
{
Form2 form2 = new Form2 (myTxtBoxValue.Text);
form2.Show();
this.Hide();
}
// constructor in Form2.cs //
public Form2(string myTxtBoxValue)
{
InitializeComponent();
TransactionBO trans = new TransactionBO();
trans.myValue = myTxtBoxValue; // <-- this gets the value accurately.
}
// my Business Object class is called TransactionBO.cs //
class TransactionBO
{
public string myValue {get;set;}
}
//在Form1.cs上单击“下一步”按钮的事件//
private void btnNext_单击(对象发送方,事件参数e)
{
Form2 Form2=新的Form2(myTxtBoxValue.Text);
表2.Show();
this.Hide();
}
//Form2.cs中的构造函数//
公共表单2(字符串myTxtBoxValue)
{
初始化组件();
TransactionBO trans=新TransactionBO();
trans.myValue=myTxtBoxValue;//让我们谈谈同事们对依赖关系的担忧
对于levelset,让我们看一些拓扑图。假设这些是依赖图
您当前的设计(取决于细节)将有一个依赖关系图,它可以是直线、网格或“完全连接”所有这些图都具有这样的特性:在图中的任何一个节点上的代码更改都需要检查,并且可能需要在许多其他点上进行更改,在某些情况下,必须查看所有这些点。这是不好的
我们更喜欢的是一个更简单的图。例如,树要简单得多。但最好的是星型图。在星型图中,您只有成对的依赖关系;对任何一个节点的更改最多需要检查另一个节点。这意味着有更好的隔离性和修改弹性
那么,在你的情况下,我们如何得到星图呢?我会这样做
定义一个表示整个工作流的新类。例如,如果它是注册到服务中的工作流,您可以将其称为EnrollmentWorkflow
。在本例中,我将其称为工作流
为工作流提供一系列字段和公共属性,这些字段和属性表示您需要从用户收集的每个数据项
在启动多步骤用户界面的代码中,创建一个新的工作流
实例,并将其传递给第一个表单的构造函数
在用户完成表单时触发的事件处理程序中,添加代码以将表单的所有字段复制到工作流的属性中。然后实例化下一个表单,在构造函数中传递相同的工作流实例
在下一个表单中,您可以从工作流对象中读取所需的所有值
继续这样做,直到最后一步完成,此时您将把工作流传递到业务逻辑层进行处理
如果愿意,您可以将数据查找、字段验证等辅助方法添加到工作流中,以便它们都包含在一个位置
如果用户需要保存进度并在以后继续,只需少量工作,就可以将工作流作为序列化对象持久化,这是一件非常简单的事情
最后,工作流对象将是星图的中心,表单将是周界上的节点。这样,您将得到一个漂亮、简单的依赖关系图,以及一个易于修改的良好设计。让我们谈谈同事们对依赖关系的担忧
对于levelset,让我们看一些拓扑图。假设这些是依赖图
您当前的设计(取决于细节)将有一个依赖关系图,它可以是直线、网格或“完全连接”所有这些图都具有这样的特性:在图中的任何一个节点上的代码更改都需要检查,并且可能需要在许多其他点上进行更改,在某些情况下,必须查看所有这些点。这是不好的
我们更喜欢的是一个更简单的图。例如,树要简单得多。但最好的是星型图。在星型图中,您只有成对的依赖关系;对任何一个节点的更改最多需要检查另一个节点。这意味着有更好的隔离性和修改弹性
那么,在你的情况下,我们如何得到星图呢?我会这样做
定义一个表示整个工作流的新类。例如,如果它是注册到服务中的工作流,您可以将其称为EnrollmentWorkflow
。在本例中,我将其称为工作流
为工作流提供一系列字段和公共属性,这些字段和属性表示您需要从用户收集的每个数据项
在启动多步骤用户界面的代码中,创建一个新的工作流
实例,并将其传递给第一个表单的构造函数
在用户完成表单时触发的事件处理程序中,添加代码以将表单的所有字段复制到工作流的属性中。然后实例化下一个表单,在构造函数中传递相同的工作流实例
在下一个表单中,您可以从工作流对象中读取所需的所有值
继续这样做,直到最后一步完成,此时您将把工作流传递到业务逻辑层进行处理
如果愿意,您可以将数据查找、字段验证等辅助方法添加到工作流中,以便它们都包含在一个位置
如果用户需要保存进度并在以后继续,只需少量工作,就可以将工作流作为序列化对象持久化,这是一件非常简单的事情
最后,世界