c#如何把子窗体的值传给父窗体?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c#如何把子窗体的值传给父窗体?相关的知识,希望对你有一定的参考价值。

比如我在父窗体定义了一个变量h,那么我在子窗体里放一个按钮,点击按钮后就把2传给父窗体的变量h,使父窗体的h=2.

你可以在父窗体中重写个form方法:例:

public Form1(string h)

InitializeComponent();
this.h = h;
label1.Text=h;

然后在子类中这样写:例单击一按钮事件:

private void button1_Click(object sender, EventArgs e)

Form1 a =new Form1("bb"); //这里测试把bb传过去!
a.Show();


希望能帮到你!
参考技术A 方式一:
在子窗体中定义 父窗体的引用,使用该引用操作父窗体的功用方法和变量
方式二:
在Progam类中定义static的父窗体引用,这样在所有的子窗体中都可以使用该引用来操作父窗体
比如:
public static MainForm mainForm;
public static Main()

.......
mainForm=new MainForm();
Appliection.Run(mainForm);


调用时
子窗体中:Program.mainForm.变量=XXX;

建议使用第二种方式

3其它方式:使用构造传递引用方式
参考技术B 1吧变量h声明为public static..子窗口直接:父窗口类名.h=2
2或者吧父窗口对象传到子窗口去。。直接就可以调用了
参考技术C 把父窗体 public static Form1 form1;
public static Main()

form1=new From1();
Appliection.Run(from1);


From2
this.MDIParent = from1;//有父窗体
this.MDIParent = null; //没有父窗体

C# winform 父窗口子窗口按钮控制

首先,父窗口有按钮调出不同的子窗口,没子窗口中有“修改”“保存”按钮,当点击“修改”后,父窗口中所有关于打开子窗口的按钮的值全部变为fasle。之后点击“保存”按钮,父窗口的按钮值又全部变为true。求解决办法。需要添加什么事件,和代码?

在父窗体内中添加一全局方法,查找到你要禁用的按钮,设置为不可用;
在子窗体的修改按钮中调用这一方法;

话说有必要吗?直接将子窗体打开为模式窗体,只能操作当前子窗体,在子窗体没关闭前不能操作父窗体不简单些吗?追问

因为设定是只要没点击“修改”,就仍然可以操作父窗口。

追答

那就是前面说的,定义一个全局的方法,再调用,或者把父窗体中打开子窗体的按钮设为全局的,在子窗体中操作它

追问

冒昧的问一下,这个全局方法该怎么写。。。。 没用过 举个例子也可以

追答

假设你的父窗口叫frmMain,添加方法:
public static void SettingButton()

foreach(Control control in Controls) //这里你自己改下,在哪个范围内查找

if(control is Button) //如果是按钮,就禁用它
control.Enable=false;


在子窗体按钮事件中调用:
frmMian.SettingButton();
基本就是这样,手打未验证过,细节你自己改下

参考技术A 在子窗体中修改的事件中,加上 如:buttion pass= 子窗体.FindControl("父窗体中buttion控件名"); pass.visible=fasle; 追问

错误 1 “WindowsApplication6.Form2”并不包含“FindControl”的定义
求解决方法

以上是关于c#如何把子窗体的值传给父窗体?的主要内容,如果未能解决你的问题,请参考以下文章

C#怎么把子窗体中的comboBox1的值能够传到父窗体的toolStrip组件中的textbox中去么?能的话代码怎么写

C# winform 在一个窗体中如何设置另一个窗体的TextBox的值?

WPF C#怎么窗体间传值

C# 在子窗体调用父窗体的值(转)

怎样在C#中实现父窗体向子窗体传值和子窗体向父窗体传值

C# winform 最大化