第一种利用委托的方法:
父窗体的方法:
private void constraintEnd_Click(object sender, EventArgs e)
{
//if (MessageBox.Show("即将强制将本炉次数据归档!", "警告", MessageBoxButtons.OKCancel) == DialogResult.OK)//2012.4.11修改
//{
CCMEnd ccmend = new CCMEnd(curHeatInfo.Rows[0]["heatid"].ToString(), label337.Text.ToString().Trim());
ccmend.resultEvent += new CCMEnd.CalculateDelegate(Endccm);
ccmend.Show(this);
}
public void Endccm(string result)
{
checkProcStatus();
if (result.Equals("1"))
{
//MessageBox.Show("归档成功!", "警告");//2012.4.11修改
MessageBoxTimeout.Show("归档成功!", "警告", 4000);
}
else
{
//MessageBox.Show(result, "警告");
MessageBoxTimeout.Show(result, "警告", 4000);
}
//}
}
子窗体方法:
public delegate void CalculateDelegate(string result);
public event CalculateDelegate resultEvent;
private void button1_Click(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(textBox4.Text) && !string.IsNullOrEmpty(textBox5.Text))
{
QT_Service.QT_Service qtService = new UI.QT_Service.QT_Service();
int cut_head = Int16.Parse(textBox4.Text);
int cut_trimmed = Int16.Parse(textBox5.Text);
result = qtService.EndEAFHeatID(4, string.Format("{0:yyyyMMddHHmmss}", DateTime.Now), cut_head, cut_trimmed);
//CalculateDelegate calculate = new CalculateDelegate(((CCMMonitor)this.Owner).Endccm);
//calculate(result);
this.Close();
resultEvent(result);
}
else
{
MessageBox.Show("输入有误,请重新输入!", "警告");
}
}
第二种方法:
父窗口:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Form2 frm = new Form2(this,textBox1.Text);//带参数构造Form2(此方法该处带俩参数构造多余)
if (frm.ShowDialog() == DialogResult.OK)
{
this.textBox1.Text += frm.ReturnText;//通过Form2的属性获得回传值
}
frm = null;
}
子窗口:
public partial class Form2 : Form
{
private Form1 pfrm;
private string frm1txt;
public Form2(Form1 parentfrm,string frm1text)
{
InitializeComponent();
pfrm = parentfrm;
frm1txt = frm1text;
}
public string ReturnText//回传值的属性
{
get { return this.frm1txt; }
}
private void button2_Click(object sender, EventArgs e)//给属性赋值并关闭模式窗体Form2
{
frm1txt = this.textBox2.Text;
this.DialogResult = DialogResult.OK;//*必加 模式窗体打开后 只有DialogResult初始化后才可继续操作 否则值无法传回
this.Close();//模式窗体关闭.close()相当于将窗体隐藏 彻底关闭需要用.Dispose()
}
private void button3_Click(object sender, EventArgs e)//关闭
{
this.DialogResult = DialogResult.Cancel;//同*
this.Close();
}
第三种方法就是将父窗口的对象当做参数传到子窗口。
参考:
http://www.cnblogs.com/wangchunming/archive/2011/12/10/2282962.html
分享到:
相关推荐
C# winform 子窗体调用父窗体函数实现关闭该窗体打开另一个窗体;在父窗体分From1内嵌一个panel1,在panel1里载入From2,点击在子窗体From2中的按钮,清除panel1里的From2,新载入From3,点击在子窗体From3中的按钮...
主要介绍了C#实现winform用子窗体刷新父窗体及子窗体改变父窗体控件值的方法,涉及C#窗体交互的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
C#(winform)里子窗体修改父窗体(子窗体刷新父窗体数
C#,winform,ShowDialog,子窗体向父窗体传值
WinForm 关闭子窗体时刷新父窗体的数据WinForm 关闭子窗体时刷新父窗体的数据
使用事件和委托 完成子窗体对父窗体的操作
C# Winform 利用线程延时创建子窗体并且可跨线程控制主窗体的控件
C#中WinForm子窗体如何向父窗体传参 form.DialogResult=DialogResult.OK 返回DialogResult时传参
C#编程 WinForm窗体开发 Selected(源码)C#编程 WinForm窗体开发 Selected(源码)C#编程 WinForm窗体开发 Selected(源码)C#编程 WinForm窗体开发 Selected(源码)C#编程 WinForm窗体开发 Selected(源码)C#编程 WinForm...
C#编程 WinForm窗体开发 ChineseCode(源码)C#编程 WinForm窗体开发 ChineseCode(源码)C#编程 WinForm窗体开发 ChineseCode(源码)C#编程 WinForm窗体开发 ChineseCode(源码)C#编程 WinForm窗体开发 ChineseCode(源码)...
NULL 博文链接:https://heisetoufa.iteye.com/blog/382684
C#两种等待窗体的实现 做C#开发过程中,数据交互难免要等待,为了避免假死状态,特找到这两种等待窗体的实现
子窗体回传值给父窗体 C#(Winfrom)窗体传值问题(子窗体回传值给父窗体).txt
附件中包含一个C#WinForm中父MDI窗体不重复打开子窗体的案例,父窗体在打开子窗体之前先判断子窗体是否存在,若存在则激活;若不存在,实例化并打开子窗体。开发环境:VS2012。
c# Winform 窗体 动画效果 c# Winform 窗体 动画效果 c# Winform 窗体 动画效果c# Winform 窗体 动画效果
c# winform 窗体样式风格 多种漂亮好看的样式风格 下拉框选择
C#WinForm窗体内Panel容器中嵌入子窗体、程序主窗体设计例子
C# Winform应用 常用窗体图标合集 可以直接下下来用,量大且好看
C#编程 WinForm窗体开发 DropDownList(源码)C#编程 WinForm窗体开发 DropDownList(源码)C#编程 WinForm窗体开发 DropDownList(源码)C#编程 WinForm窗体开发 DropDownList(源码)C#编程 WinForm窗体开发 DropDownList...
C# winform程序更改窗体的皮肤实例