情况是这样的
我有一个主窗体和一个小窗体
当我在主窗体触发一个事件的时候 弹出小窗体,我用的是showdialog()方法
我先修改了小窗体的构造函数,带2个参数,然后主窗体触发时实例化小窗体 并传入参数。这是没有问题的现在问题是 当我在小窗体中处理完时间,按 确定 按钮 后 需要将一些数据传回到主窗体。我不想将小窗体中需要传回的数据设为public
但是修改主窗体构造函数的话,因为我用的是showdialog()方法显示小窗体,这样我不能在按 确定后 重新实例化 主窗体请教一下 这时候 比较好的方法是什么?PS: 我语言表达能力不太好,可能显得啰嗦- -
我有一个主窗体和一个小窗体
当我在主窗体触发一个事件的时候 弹出小窗体,我用的是showdialog()方法
我先修改了小窗体的构造函数,带2个参数,然后主窗体触发时实例化小窗体 并传入参数。这是没有问题的现在问题是 当我在小窗体中处理完时间,按 确定 按钮 后 需要将一些数据传回到主窗体。我不想将小窗体中需要传回的数据设为public
但是修改主窗体构造函数的话,因为我用的是showdialog()方法显示小窗体,这样我不能在按 确定后 重新实例化 主窗体请教一下 这时候 比较好的方法是什么?PS: 我语言表达能力不太好,可能显得啰嗦- -
比如我设定
public delegate void mydelegate(string str);
public void update(string str)
{
我需要传递的str = str;
}是这样吗?
BigFrm:
using System.Windows.Forms;namespace FrmChange
{
public partial class BigFrm : Form
{
private int mPara1; private int mPara2; public int Para1
{
get
{
return mPara1;
}
set
{
mPara1 = value;
}
} public int Para2
{
get
{
return mPara2;
}
set
{
mPara2 = value;
}
} public BigFrm()
{
InitializeComponent();
} private void button1_Click(object sender, System.EventArgs e)
{
SmallFrm smallfrm = new SmallFrm(mPara1, mPara2);
smallfrm.Parent = this;
if (smallfrm.ShowDialog() == DialogResult.OK)
{
// 这时候这个类里面的mPara1与mPara2已经是SmallFrm传回来的值
MessageBox.Show(string.Format("mPara1: {0}, mPara2: {1}", mPara1, mPara2));
}
}
}
}
SmallFrm
using System.Windows.Forms;
using System;namespace FrmChange
{
public partial class SmallFrm : Form
{
private int mPara1ToBigFrm;
private int mPara2ToBigFrm;
private BigFrm mParent; public BigFrm Parent
{
get
{
return mParent;
}
set
{
mParent = value;
}
}
public SmallFrm()
{
InitializeComponent();
}
public SmallFrm(int para1, int para2)
: this()
{
mPara1ToBigFrm = para1;
mPara2ToBigFrm = para2; textBox1.Text = mPara1ToBigFrm.ToString();
textBox2.Text = mPara2ToBigFrm.ToString();
}
protected override void OnClosing(System.ComponentModel.CancelEventArgs e)
{
base.OnClosing(e);
mPara1ToBigFrm = Convert.ToInt32(textBox1.Text);
mPara2ToBigFrm = Convert.ToInt32(textBox2.Text);
Parent.Para1 = mPara1ToBigFrm;
Parent.Para2 = mPara2ToBigFrm;
}
}
}