c# 在form2中控制form1的控件? 急用

在form2的textbox中填入一个的词语,然后按下form2中的一个button,使这个词语添加到form1的combox的list中求代码... 在form2的textbox中填入 一个的词语, 然后按下form2中的一个button,使这个词语添加到form1的combox的list中 求代码 展开
 我来答
dongjin
2011-05-20 · TA获得超过535个赞
知道小有建树答主
回答量:89
采纳率:0%
帮助的人:115万
展开全部
相比较上面的2个帅哥提到的public函数,调用,
建议你学习使用委托或者事件(实际上事件是委托的一种特例,我们点击按钮,触发一个事件实际上也是一个委托。)
学习调用委托或者事件,是学习C#必经之路。很简单的东西,被书上讲复杂了。以后跨线程调用常用的就是这个东西。要想提高,必须掌握。

你讲的问题实际上是跨窗口间的调用问题,用静态变量的方法比较原始,并且刷新起来很别扭。通行的做法就是用事件或者委托来实现。下面代码 15行内完成你的需求,简练简洁

form1中代码
点击某一按钮弹出form2的代码
form2 f = new _form2();
f._bbb+= new EventHandler(_aaa);
f.ShowDialog();

定义上面的_aaa
private void _aaa(object sender, EventArgs e)
{
//combos的list添加
}

form2中代码
public event EventHandler _bbb;
在 form2的button代码
if (_ bbb!= null)
{
_bbb(null, null);//这时的bbb实际上就是form1中的aaa函数,
//MessageBox.Show(" 提交成功!");
}

讲解以上代码
1、在form1中定义一个函数 -aaa(),这个函数负责给combox添加删除数据
2、同时,在form1中添加 弹出form2的代码
在这个代码中,要添加一个事件 ,这个事件调用_aaa()这个函数
3、去FORM2中间定义一个_bbb事件,供上述2调用;
4、在FORM2中 ,点击按钮后,调用form1的aaa()。参数可以是空值。『这个地方可能是理解上的难点,仔细琢磨』
追问
在_aaa函数里要写什么代码吗?
追答
哦,上面在补充一下
if (_ bbb!= null)
{
_bbb((object)(textbox.text), null);//这时的bbb实际上就是form1中的aaa函数,注意,这时把
//textbox的值传递给给了form1
}

_aaa中间写的代码
private void _aaa(object sender, EventArgs e)
{
string _ccc=sender.tostring();//这个sender是一个对象,他的值就是上面的textbox.text,这样值就传过来了
ListItem li=new ListItem(_ccc,_ccc);
combobox.Items.add(li);

}

注意大小写,我这里没有用开发工具,随手写的代码,你自己修改一下大小写,注意括号等标点符号。
解燎3e
2011-05-19 · TA获得超过206个赞
知道小有建树答主
回答量:452
采纳率:0%
帮助的人:329万
展开全部
在form2里面定义一个public变量,点击以后,隐藏form2,记住不要关闭
在form1中就可以直接使用这个变量了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bem1987
2011-05-19 · 超过24用户采纳过TA的回答
知道答主
回答量:50
采纳率:0%
帮助的人:50.8万
展开全部
在Program里 建一个结构体;里面定义一个静态变量,这个变量在FORM1 和FORM2 中可以通用;直接赋值取值就好;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;

namespace Form1Form2
{
public struct mm
{
public static string m;
};
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{

Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
}

FORM1
mm.m = textBox1.Text;
FORM2
textBox1.Text = mm.m;

在FORM1中可以获得这个值,再加入COMBOX中就好了!是静态变量!主程序没关闭 值就存在。
追问
可不可以直接调用form1里的combox控件啊?
追答
控件都是关联到窗体的吧~你调用COMBOX控件时什么意思?在FORM2里操作FORM1中的控件吗?
这个目前我还没研究成功过,直接传递数据应该可以完成你需要的操作了吧!
不过我觉得 控件都是窗体的私有属性,跨窗体控制 对程序的安全性有影响的吧!
要做到 估计也要先获取FORM1的窗体句柄 才能操作。。
(个人猜测,我以为你只需要传值,如果说涉及到操作,试试楼下的委托吧!)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式