c#中 在不同窗体中根据控件id或者name属性查找另一个窗体里的控件

如有两个窗体form1和form2,在form1中有很多控件,例如textbox等,其name属性为student,text属性为123456.在form1中点击一个按钮后来到form2窗体,我想在form2中根据之前说的name属性查找到form1中的textbox控件以便获取其值(123465),该如何实习?我大概记得是在form2中实例化form1,form=new form1();string s=(form.control["student"]as textbox).text 具体的代码忘了。试了一下不好用 希望有大人相助
我又试了一下,发现不能提取到需要用户输入的控件的值,只能说是例如lable 有固定的text值 如:姓名等 这些可以提取到。动态输入的textbox等全是空

你通过Controls集合的方式实现 也是可以的 不过有一个更简单的方法

比如你现在在form1 里添加一个共有的方法叫做
public void SetStudentText(string text)
{
this.student.Text=text;
}
public string GetStudentText()
{
return this.student.Text;
}

你再form2 中实例化
把这个写成全局的
Form1 form=null;

form=new Form1();

然后你想改变Form1中的text值 就只需要修改text
调用
form.SetStudentText("123456");
form1的那个student那个textbox的text属性就变味123456了

需要赋值
调用
form.GetStudentText();就可以了
你说的那种方法也可以不过比较麻烦
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-05-19
需要这么复杂么?窗体跳转传参数就好了啊。你可以在form2中设置一个公共属性,然后在按钮点击时创建form2实例并给这个属性赋值。或者可以添加有参数的构造,实例化form2时将文本框中值传递过去。在或者可以在form2中写一个方法通过方法传递值也可以。或者传递文本框对象或者窗体对象。都可以实现

C# 怎么在自定义的方法里调用窗体控件 或者 在另一个窗体里调用本...
通过挂载事件的方式跨Form调用。以下为在主窗体调用子窗体的TextBox2来设置主窗体Textbox1的代码:主窗体:private void button1_Click(object sender, EventArgs e){ Form2 frm = new Form2();frm.Closed += new EventHandler(this.CloseForm2);frm.ShowDialog();} private void CloseForm2(object...

怎样实现C#获取另一个窗体的控件值
让From1窗体中Text1Box控件的值传给Form2窗体中的TextBox控件 Form1窗体 { Button点击 { Form2 f2 = new Form2();f2.an = this.TextBox1.Text; \/\/传值给Form2定义的an变量 f2.Show();} } Form1窗体 { string an = ""; \/\/定义一个变量用来接收Form1传过来的值 窗体Load方法 ...

C# winform 由id获取该控件!
C#Control里没有ID这个属性只有Name属性 其实就是ID的意思 你可以根据Name属性找到这个控件 代码如下 private void button1_Click(object sender, EventArgs e){ string name = "label1";Control control = null;foreach (Control item in this.Controls){ control = GetControl(name, item);if (...

关于C#根据名字,调用多个控件的问题。
你其实一开始设计就有问题,那81个textbox可以直接在代码中动态创建,并不需要你一开始就直接画到窗体上(如果用代码创建,就可以直接将这些textbox放入数组或者list中),这样就可以简单的通过类似于myTextArr[i]来调用其中的某一个textbox 至于查找控件,可以用类似这种方法 private Control findControl(str...

c#中怎么在一个窗体中改变另一个窗体上的控件属性
这个得看你是那个窗体先打开:如果form1先打开,form2后打开 可以在form2中添加一个构造函数 form2(MenuStrip menu) 代码如下:public Form2(MenuStrip menu ){ InitializeComponent();Form1Menu = menu;} MenuStrip Form1Menu = null;private void button1_Click(object sender, EventArgs e){ \/\/...

C#中的窗体程序 想让一个窗体上textbox中的值 传递到另一个label中
最简单的方法是你先新建一个静态类 在类里面定义一个string 类型的变量 在登陆成功后给这歌变量赋值,然后就可以在登陆后的窗户使用了 public static CommonData { public string StudentId(){get;set;} } 登陆成功后赋值:CommonData.StudentId="2010307200111";使用的时候 label.Text =CommonData....

C# 用API获取其他程序窗体中的内容
我也是做到半路上卡住了,API方式是指定C能认识的控件ID的,比如Windows内部程序,其他的程序,不对,名称不能识别 [DllImport("user32.dll", EntryPoint = "FindWindow")] public static extern int FindWindow( string lpClassName, string lpWindowName ); [DllImport("user32.dll",...

在C#winform中如何遍历子窗体中有容器中的所有的控件
一个递归方法取得页面上所有类型为textbox的控件,并对其清空,相信你看了后有所感悟。private void Button1_Click(object sender, System.EventArgs e){ foreach (Control ctl in this.Controls){ this.txtClear(ctl);} } private void txtClear(Control ctls){ if(ctls.HasControls()){ foreach...

c#中winform的webbrowser控件在窗体中如何获取按钮或者的事件?
1、在打开的ie浏览器窗口右上方点击齿轮图标,选择“Internet选项”,如下图所示:2、在打开的Internet选项窗口中,切换到安全栏,在安全选卡中点击“自定义级别”,如下图所示:3、在“安全设置-Internet 区域”界面找到“Java 小程序脚本”、“活动脚本”,并将这两个选项都选择为“禁用”,然后点击...

c# 如何在一个窗体中操作主窗体的控件属性
首先你登录成功后,也就是数据库查询匹配成功后返回一个登录对象或者返回一个值也行。根据值判断是否登录成功,如果成功,就NEW出主窗体。比如你主窗体的名称是FORM1 那么就: FORM1 fm1=new FORM1();然后比如你的控件是TEXTBOX: ((TextBox)fm1.Controls["txt"]).visible=true;\/\/txt为TEXT...

相似回答