winform如何在一个form中修改另一个form控件属性

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了winform如何在一个form中修改另一个form控件属性相关的知识,希望对你有一定的参考价值。

一个父窗体form1 几个子窗体form11、form12、form13.....每个对应form1上的一个button(如form11对应button1、form12对应button2......)
现在要实现这样的功能:当点击button1时,弹出form11,同时button1隐藏或不可用,当关闭form11时button1状态改回可用
注:不采用对话框模式打开,因为可能需要同时打开多个子窗体,但又不能同一个窗体打开多个,所以要求这样,请教高手

1.先解决button1不可用的问题
第一个解决办法就是当点击button1时设置Form11可见并且同时设置button1不可用 这个是在form1中就可以实现的
第二个解决办法>既然你提到了“修改另一个form控件属性” 这种情况我以前回答过你可以参考
http://zhidao.baidu.com/question/126007253.html
关于委托也可以参考我的另一个回答
http://zhidao.baidu.com/question/125931172.html

2.解决不能同一个窗体打开多个问题
比如当你点击button1时 要先行判断Form11的Visible属性 如果为true直接return

3.建议
类似你这样多窗体的程序 最好使用isMdiContainer属性 也就是一个父容器的类型
参考技术A 你可以这样解决:(举例)
点击Button1事件
private void button1_Click(object sender, EventArgs e)

this.form1.show();
this.button1.visiable=false;

关闭form1事件
private void closing(object sender, FormClosingEventArgs e)

this.button.visable=true;

winform中如何在一个窗口中调用另一个窗口的textBox里的Text属性值

我其他的方式不说了,就说一个比较实用的方式:
不管哪个窗口调用哪个的textBox值,只需要将被调用的textBox值赋给一个静态类变量。
然后需要值的窗口调用静态类变量即可,明白吗?
不明白的话,我手写一份简单例子。
Public static class Config
public static string _value = null;

窗口二:Config._value = textBox2.Text;
窗口一:textBox1.Text = Config._value;
参考技术A 传参啊
例如:
1: 有form1和form2 两个窗口,其中form1中有一个textBox,form2想获得form1中textBox里的Text属性值,
2: form2是通过form1上的一个Button空间 new 出来的

在form2 中定义一个成员变量 或 属性 用来接收textBox里的Text属性值
public string str = null;
在form1的Button的Click事件中写入以下代码
form2 f = new form2();
f.str = textBox.Text;
f.Show();

这样参数就传过去了;

或者在form2定义一个构造函数,在new form2的时候通过构造函数传参本回答被提问者和网友采纳
参考技术B Owner/ Parent
Winform变量,全局,都可以
参考技术C 建一个新模块module1,在module1里public一个变量,在要传递变量值的窗口把值赋于变量,在要接收该值的窗口把变量值赋于给相应控件属性。该方法比较简单。

以上是关于winform如何在一个form中修改另一个form控件属性的主要内容,如果未能解决你的问题,请参考以下文章

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

如何从另一个类访问 Winform 文本框控件?

关于winform子窗体刷新父窗体

C# 刷新另一个窗体的listview

winform中如何在一个窗口中调用另一个窗口的textBox里的Text属性值

C# winform 关闭窗体后在打开 如何让打开的窗体还是原窗体 且打开的窗体还是原状态