我有以下情况:主窗口中的一些数据已经完成,它也是一个按钮,打开一个新的模式窗口,在那里您选择产品和产品的范围,我单击确定,并移动到下一个屏幕,在那里选择数量,价格,并在批准后,我单击确定的数据,我想有权访问在主窗口的模式窗口中选择的数据,因为它可以使用C #?
发布于 2012-08-30 00:08:25
你可以做一些类似这样的事情:
private void button1_Click(object sender, EventArgs e)
{
Form2 firstPopup = new Form2();
firstPopup.ShowDialog();
var someData = firstPopup.SomeValue;
Form2 secondPopup = new Form2();
secondPopup.ShowDialog();
var someOtherData = secondPopup.SomeValue;
doSomeStuff(someData, someOtherData);
}在本例中,SomeValue是表单上的一个属性,具有一个公共的getter和一个私有的setter。它的值将在窗体关闭之前的某个时间设置。每个表单可以有任意数量的此类属性,也可以有任意数量的表单。
发布于 2012-08-30 00:10:09
这类似于“打开”、“另存为”和“文件夹”对话框的工作方式。以打开文件对话框为例,单击确定后,即可访问所选文件
建议:
在你的模式窗口中,设置一些公共属性来保存你的数据。设置OK按钮以将表单DialogResult设置为OK,在父表单中,您可以执行以下测试(在本例中,DataModel是您试图访问的数据)
if(modalWindow.DialogResult == DialogResult.OK)
{
this.DataModel = modalWindow.DataModel;
}以下是有关如何使用DialogResult http://msdn.microsoft.com/en-us/library/system.windows.forms.form.dialogresult.aspx的一些信息
发布于 2012-08-30 00:11:07
通常,对于模态窗口,您遵循的模式与OpenFileDialog使用的模式类似,您可以执行以下操作:
public class MyDialog : Form
{
public MyResult Result { get { /* code elided */ } }
}也就是说,除了拥有模式表单的代码之外-您还公开了一个给定类型的公共Result属性,该属性可以提供在该表单的UI上输入的数据(这比在表单上公开控件要好,因为这意味着您可以自由地更改所有这些控件,而不必重新编码依赖于它的任何其他表单)。
如果单击Ok或Yes (无论是什么确认按钮)按钮,您要确保Result可用且有效。然后,确保相应地设置表单的DialogResult (也可以为每个按钮分配一个-例如,将DialogResult.Cancel分配给cancel按钮)。
然后,当你打开你的表单时,你可以这样做:
var form1 = new MyDialog();
if(form1.ShowDialog() != DialogResult.OK)
return; //abort the operation, the user cancelled/closed the first modal
MyResult form1Data = form1.Result; //get your actual data from that modal form.
//...and then on with your second modal因此,您可以在进行过程中从模型中收集数据,如果有任何数据被取消,则中止。
https://stackoverflow.com/questions/12182021
复制相似问题