c# 在form2中控制form1的控件? 急用
在form2的textbox中填入一个的词语,然后按下form2中的一个button,使这个词语添加到form1的combox的list中求代码...
在form2的textbox中填入 一个的词语, 然后按下form2中的一个button,使这个词语添加到form1的combox的list中 求代码
展开
3个回答
展开全部
相比较上面的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()。参数可以是空值。『这个地方可能是理解上的难点,仔细琢磨』
建议你学习使用委托或者事件(实际上事件是委托的一种特例,我们点击按钮,触发一个事件实际上也是一个委托。)
学习调用委托或者事件,是学习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);
}
注意大小写,我这里没有用开发工具,随手写的代码,你自己修改一下大小写,注意括号等标点符号。
展开全部
在form2里面定义一个public变量,点击以后,隐藏form2,记住不要关闭
在form1中就可以直接使用这个变量了
在form1中就可以直接使用这个变量了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在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中就好了!是静态变量!主程序没关闭 值就存在。
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的窗体句柄 才能操作。。
(个人猜测,我以为你只需要传值,如果说涉及到操作,试试楼下的委托吧!)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询