当前位置:编程学习 > C#/ASP.NET >>

请问,如何在form2中访问已经打开的form1中的控件

在form1中
Form2 form2 = new Form2();
form2.show(this);


请问:
如何在form2中访问form1的panel1中的button2
听说用委托比较好,是怎么委托的?
谢谢!!! --------------------编程问答-------------------- 你将Form1中的button2,作为构造函数中的参数传递过去就行了。


在form1中
Form2 form2 = new Form2(button2);
form2.show(this);

在Form2中

public Button btn;

public void Form2(Button button)
{
       btn = button;
}

string text = btn.Text; //获取到的是Form1中button2的Text值。
--------------------编程问答-------------------- form2 中有 相关函数噻  

form2.函数(参数);  参数即是this.。。。。   --------------------编程问答-------------------- 1楼的方法可是可以,不过我想如果需要访问的控件比较多,Form2的构造函数不是很麻烦吗?
用委托是咋整的呢 --------------------编程问答-------------------- 在 form1中
 Form2 form2=new Form2();
 form2.show(this);
在 form2中
 Form1 myForm=(Form1)this.Owner;
 Myform.Button2
这里可以访问其他所有 Form1中的控件
  你试试   --------------------编程问答--------------------
引用 3 楼 sersarcf3 的回复:
1楼的方法可是可以,不过我想如果需要访问的控件比较多,Form2的构造函数不是很麻烦吗?
用委托是咋整的呢

委托用不着的。

或是设置Owner属性(和重载构造相似)
在form1中 
Form2 form2 = new Form2();
form2.Owner = this;
form2.ShowDialog();

 在Form2中
public void Form2()
{

string msg = this.Owner.Controls["button2"].Text; //获取Form1中的button2控件的Text值。
ps:获取Form1中的其他控件类似,只要知道Form1中控件的ID就行了,然后就可以获取相应的属性值了。
假如Form1中有一个TextBox1,想获取其输入的值,如下
string val = this.Owner.Controls["TextBox1"].Text;

--------------------编程问答--------------------  foreach (Control c in (this.Owner.Controls["panel11"]).Controls)  
            {
                if (c is CheckBox)
                {
                    (c as CheckBox).Checked = false;
                }          
            }

我这么写,为什么不行呢?说未将对象引用设置到对象的是咧 --------------------编程问答-------------------- 谢谢楼上的回答,我还想知道用委托咋弄的?谢谢!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1 --------------------编程问答-------------------- 看下面的推荐贴 委托麻烦一点,但更灵活
http://topic.csdn.net/u/20110407/19/c1068d69-7331-4d02-bc0b-f5ba7a5f8dd8.html --------------------编程问答-------------------- form1:
Form2 form2 = new Form2();
form2.Owner = this;
form2.ShowDialog();

form2:
form1 f1=this.owner as form1;
再将form1中的button的modi...属性设置成public
引用就是 f1.button,那个属性不会拼了o(╯□╰)o --------------------编程问答-------------------- this.Owner.Controls["panel11"])找不到panel1吧 --------------------编程问答-------------------- 直接把from的对象传过来,在设置一下form1 要访问的控件的可访问性级别  给public 在from2中就可以随意了 --------------------编程问答--------------------
引用 4 楼 heyuan390908582 的回复:
在 form1中
 Form2 form2=new Form2();
 form2.show(this);
在 form2中
 Form1 myForm=(Form1)this.Owner;
 Myform.Button2
这里可以访问其他所有 Form1中的控件
  你试试

提示:4楼的方法需要把form1窗体中控件的Modifiers属性设置为Internal才可以 --------------------编程问答-------------------- 这个根本可以不用委托,,LZ最好别乱用委托,,如果不是很了解委托很容易被委托给陷进去的。。 --------------------编程问答--------------------
引用 4 楼 heyuan390908582 的回复:
在 form1中
 Form2 form2=new Form2();
 form2.show(this);
在 form2中
 Form1 myForm=(Form1)this.Owner;
 Myform.Button2
这里可以访问其他所有 Form1中的控件
  你试试

不知道楼主没说清,还是其他细节忘了。
这种方法根本就访问不到form1中的button2,不知道楼主试了,没有,
如果楼主执意要坚持的话,不妨自己写一个列子,分享全部代码? --------------------编程问答-------------------- 已经不用回答喽。。。上面都回答过了。。
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,