(.NET(C#))从父窗体触发子窗体按钮(【计算】)如何实现?触发时不允许丢子窗体控件信息!

如上图:通过父窗体的工具栏按钮触发子窗体的计算按钮,如何实现?
要求:第一、不能丢失textbox值;所以不能用new来实例化;第二、计算完的值在子窗体显示;

委托定义事件
自己做了个简单测试,相互学习下,如下

父窗体代码:
public event EventHandler MyClick;
public Form3()
{
InitializeComponent();
Form f = new Form4(this);
f.Show();
f.BringToFront();
f.TopLevel = false;
this.panel1.Controls.Add(f);
}
private void button1_Click(object sender, EventArgs e)
{
if (MyClick != null)
{
MyClick(sender, e);
}
}
子窗体代码:
public Form4()
{
InitializeComponent();
}
public Form4(Form3 paform)
{
InitializeComponent();
paform.MyClick += new System.EventHandler(this.mmss);
}
private void mmss(object sender, EventArgs e)
{
MessageBox.Show(textBox1.Text);
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-02-27
在子窗体写好方法,设成公共的,然后在父窗体保存子窗体的引用.需要时直接调用即可追问

button事件是非static的!怎么做?

追答

把button时间要做的操作设成一个公共的方法。也是可以调用的。不一定非要通过button事件来操作吧。

第2个回答  2013-02-27
委托是最好的解决方案
第3个回答  2013-02-27
直接调用子窗体这个计算函数就可以了啊 、追问

我把那函数设为public 调用了之后根本获取不到子窗体textbox值啊...算完的结果也不更新到子窗体,没反应!

追答

按着楼上的方法做下,应该是对的呀

(.NET(C#))从父窗体触发子窗体按钮(【计算】)如何实现?触发时不允许...
父窗体代码:public event EventHandler MyClick;public Form3(){ InitializeComponent();Form f = new Form4(this);f.Show();f.BringToFront();f.TopLevel = false;this.panel1.Controls.Add(f);} private void button1_Click(object sender, EventArgs e){ if (MyClick != null){ MyClick(...

语言C#.net 如何将子窗体嵌入到父窗体里面
如果要将某个窗体设置为父窗体,只需将该窗体的IsMdiContainer属性设置为True即可。2、设置子窗体:通过设为某个窗体的MdiParent属性来确定该窗体是那个窗体的子窗体。语法如下:1: public Form MdiParent{get;set;} 3、排列MDI子窗体:语法如下:1: public void LayoutMdi(MdiLayout value)value:是MdiLa...

怎么在c#在父窗体点一个按键打开某子窗体,然后关闭其他子窗体
主窗体为FormMain,这个窗体上有一个按钮button1 子窗体有多个,分别为Form2, Form3,……,Form10 要求:点击FormMain上的button1后,显示Form2并关闭其他子窗体 2)FormMain.cs using System;using System.Collections.Generic;using System.Drawing;using System.Windows.Forms;namespace WindowsFormsAp...

C#中,父窗体怎样控制子窗体的控件和属性
是的,在父窗体中建立子窗体的实例,也就是New一下。然后用属性控制。

怎样在C#中实现父窗体向子窗体传值和子窗体向父窗体传值
子窗体按钮事件 ChildWindow child = new ChildWindow() { textbox1.Text="我的名字是父窗体给的!" };\/\/第1步,给子窗体传值了 child.ShowDialog();\/\/第2步,调用ShowDialog if (child.DialogResult==true)\/\/第3步,然后对DialogResult进行判断 { this.Title = child.Title;\/\/子窗体给...

C#中如何先弹出子窗体,父窗体隐藏,而后,单击子窗体的按钮,子窗体关闭...
如果是登录窗口,一般的做法是更改program.cs,先显示登录窗口,通过后再显示主窗体,假定你的登录窗体叫Login,主窗体叫MainForm static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Login login = new Login(); login.ShowDialog(...

c#子窗体控制父窗体的显隐
我们来实现这样一个功能:当父窗体打开一个子窗体时隐藏父窗体的Panel,而当子窗体关闭时让Panel显示。实现的主要思路是创建一个子窗体的父类并在类中声明一个委托,当父窗体调用子窗体时绑定显示Panel的方法。如下:1.新建一个项目,分别添加MainForm、BaseChildForm两个窗体,其中MainForm的IsMdiContainer...

c#开发windows窗体,如何让上层控件不截获鼠标事件,交给下层控件来处理...
选中多个控件,然后按住鼠标左键进行同时移动。我给你说说C#程序实现的思路吧:方法是这样的,你在你自定义的用户控件最上方增加一个PictrueBox控件,然后将该控件弄成透明的,pictureBox1.BackColor = Color.Transparent;这样你点击或者移动鼠标,就可以在这个控件上进行响应,从而达到你想要的拖动。

C#窗体继承后,如何在子类窗体中修改父窗体中控件的事件?
你需要将父窗体的引用传到子窗体中,比如重载MergeForm2的构造函数,添加一个MergeForm1的参数,然后将子窗体的MergeForm1类变量指向这个引用。更改后MergeForm2部分代码如下:public partial class MergeForm2 : Form { \/\/声明一个MergeForm1引用 MergeForm1 Parent;...\/\/重载构造函数 public MergeForm...

C# 父窗口(form1)与子窗口(form2)的问题
两种方法,第一种如楼上所说,用ShowDialog(),此时打开的是模态窗体,也就是在你关闭它之前其他任何窗体都无法使用。第二种是使用Form的enable属性 在form1的按钮事件中加入代码:Form2 frm = new Form2();frm.Owner = this;frm.Show();this.Enabled = false;在form2中重写关闭事件:protected ...

相似回答
大家正在搜